2016-08-19 2 views
0

Я использую бритву MVC для рендеринга модели ниже.ng-model возвращает пустое значение, даже если вход html имеет значение

@Html.HiddenFor(u => u.FormNo, new { @ng_model = "formData.formno" }) 

Когда исходный код просматривается, вход html имеет значение.

<input id="FormNum" name="FormNum" ng-model="formData.formno" type="text" value="154S00017"> 

, но угловой возвращает это как пустое значение в контроллере.

var url; 
var controller = 'Inbox'; 
var action = 'Get_RCTS_FormHistory'; 
var RCTS = angular.module('RCTS', []); 

    RCTS.controller('historyController', function ($scope, $http) { 
     $scope.formData = {}; 
     $scope.formData.formno = ''; 
     url = "/" + controller + "/" + action + "?FormNo=" + $scope.formData.formno; 
     alert(url) 
     $http.get(url).success(function (data) { 

      $scope.logs = data; 


     }); 
    }); 

И после отладки в Visual studio.

debug

Я довольно новыми для угловых и это действительно раздражает меня. Я попытался добавить туда функцию document.ready(), но она также вернула ошибку.

Благодаря

Я решил, присвоив значение из другого входа HTML.

$scope.formData.formno = $('#FormNo').val(); 

и в конечном счете решить его с помощью

@Html.HiddenFor(u => u.FormNo, new { @ng_model = "formData.formno",@[email protected] }) 

из поля зрения бритвы.

+1

вы определенно есть '$ scope.formData.formno =«»; 'в вашем контроллере, конечно, это будет пустым. – Claies

+1

также, угловой не устанавливает значения для 'ng-model' из' value' на входе; если вы действительно должны установить значение со стороны сервера, вам нужно либо установить значение как глобальную переменную (не рекомендуется), либо использовать 'ng-init'. см. http://stackoverflow.com/a/13771205/2495283 – Claies

+0

@Claies Да, я разместил эту строку кода там с моим тестированием, потому что даже без нее он все равно не дал мне значения. – cafekun

ответ

1

Вы не обновляя значение объема переменной

$scope.formData.formno = 'cakefun'; 
+0

ОК, теперь я понимаю. Я использовал JQuery для обновления модели с контроллера. $ scope.formData.formno = $ ('# FormNo'). Val(); Спасибо! – cafekun

+0

@cafekun, в то время как этот подход * работает *, он немного уродлив, он не эффективен, и вы действительно не используете угловой в своей предполагаемой парадигме проектирования, чтобы избежать взаимодействия с DOM как можно больше. – Claies

+0

@ Claies, как вы думаете, может быть сделано? Я действительно хотел использовать Razor для визуализации моего представления. Любая помощь будет оценена. – cafekun

Смежные вопросы