как передать значения ng-bind в переменную в asp.net основной вид?

#javascript #angularjs #asp.net-mvc #asp.net-core #ng-bind-html

#javascript #angularjs #asp.net-mvc #asp.net-ядро #ng-bind-html

Вопрос:

У меня есть такой тег : <a data-ng-click="showform(@item.CategoryId)">

У меня есть переменная «catid» в razor… @{int catid; }

Я хочу сохранить значение в ‘catid’

это мой js-код :

 
 app.controller('Результат', функция ($ scope) { 
 $ scope.CatId = 0;
 $scope.showform = функция (идентификатор) {
 $ scope.CatId = идентификатор; 
 }
 });

Комментарии:

1. Вы не можете установить переменную на стороне сервера, используя js-код на стороне клиента. Можете ли вы уточнить больше о фактическом сценарии / требовании?

2. я хочу использовать CatId для кода linq и показывать имя категории при просмотре

3. Почему бы не сделать запрос со стороны клиента angularjs к серверному действию с CatId параметром as и запросить данные с помощью linq, а затем обновить название категории в пользовательском интерфейсе на основе полученных данных на клиенте angularjs?

Ответ №1:

я хочу использовать CatId для кода linq и показывать имя категории при просмотре

Можете ли вы дать мне пример кода?

Ниже приведен рабочий пример, вы можете обратиться к нему.

 <div ng-app="myApp" ng-controller="Result">
    @foreach (var item in Model)
    {
    <a data-ng-click="showform(@item.CategoryId)">CategoryId is @item.CategoryId</a>
        <br />
    }
    <h2>Name of selected Category is {{CatName}}</h2>
</div>
 

Сделайте запрос (ы) с помощью AngularJS $ http service

 <script>
    var app = angular.module('myApp', []);
    app.controller('Result', function ($scope, $http) {
        $scope.CatId = 0;
        $scope.CatName = "";

        $scope.showform = function (id) {
            $scope.CatId = id;

            $http.get("/GetCategoryNameById?catid="   id)
                .then(function (response) {
                    $scope.CatName = response.data;
                    //your code logic here based on your actual requirement
                });
        }
    });
</script>
 

Мой GetCategoryNameById метод действий для целей тестирования

 [HttpGet("GetCategoryNameById")]
public IActionResult GetCategoryNameById(int catid)
{
    //your code logic here

    //query data based on received catid

    var category = _dbcontext.Categories.Where(c => c.CategoryId == catid).FirstOrDefault();

    return Ok($"{category.CategoryName}");
}
 

Результат теста

введите описание изображения здесь

Комментарии:

1. спасибо, братан, если я хочу отправить два разных значения взамен, как это можно сделать? return Ok($"{category}",$"{field}");

2. field является ли список данных

3. Вы можете определить класс viewmodel с ожидаемыми свойствами для категории, поля и т. Д., А Затем вернуть его в клиентское приложение.

4. хорошо, я не знаю, как получить модель в этом коде? ` $http.get(«/GetCategoryNameById?catid=» id) .затем (функция (ответ) { $scope. Поля = ответ.данные; }); `

Ответ №2:

Может быть, вы можете использовать этот способ.

 <input type="hidden" name="catid" id="catid" value="{{Catid}}" />
 

При отправке формы это значение передается asp.net ядро.