Как связать поле модели с помощью функции Jquery?

На моей странице ASP.NET MVC есть форма для новых записей.

Когда пользователь сохраняет запись, мне нужно указать значение поля моей «Модели» в функции Jquery.

$('#checkBoxInsertPF').click(function(e){
    @Model.CNPJ = $(".....................").Val('')
});

Как я могу сделать это в блоке Jquery?

InsertNewRegister.cshtml

@Model.Cliente model

     @section scripts{
      <script type="text/jscript">
                 $('#checkBoxInsertPF').click(function(e) {
                   @Model.CNPJ = $(".....................").Val('')
     });
     }


person user3154466    schedule 02.01.2014    source источник
comment
Вы пытались определить функцию Razor в разделе @functions страницы? Я бы попытался создать тот, который принимает параметр, который вам нужно установить для модели, и устанавливает это значение для модели. См. эту ссылку: stackoverflow.com/questions/5159877/   -  person Joe Brunscheon    schedule 02.01.2014


Ответы (1)


Вы идете об этом неправильно. Когда ваша модель привязана к вашему представлению, это делается на сервере до того, как она попадет к клиенту. В результате javascript не может изменить значения отправленной модели. Это означает:

$('#checkBoxInsertPF').click(function(e){
    //Cannot set a model value from client side in this manner
    @Model.CNPJ = $(".....................").Val('')
});

Не будет работать. Однако вы можете установить скрытый ввод для элементов модели, которые необходимо обновить, чтобы при отправке формы эти значения были привязаны к ViewModel в методе действия.

Просмотреть

@using(Html.BeginForm()){
    ...My Form Elements
    @Html.HiddenFor(x=>x.CNPJ);
}

Раздел сценария

$('#checkBoxInsertPF').click(function(e){
    var newVal = $(".....................").Val('');
    $("#CNPJ").val(newVal);
});

Это создает элемент из вашего поля @Model.CNPJ, чтобы вы могли получить к нему доступ из jQuery и обновить значения. При POST это значение будет привязано к модели.

person Tommy    schedule 02.01.2014