Как получить модифицированное значение модели в методе Post MVC? - PullRequest
0 голосов
/ 03 мая 2010

HI, Кто-нибудь знает, как я могу получить измененное значение модели, которое я связал с элементами управления на странице просмотра. Например, я использовал текстовое поле для просмотра, как показано ниже:

<%=Html.TextBoxFor(model => Model.firstName, new { id = "txtFirstName"})%>

Но в моем методе записи я не могу получить измененное значение из текстового поля. Любое решение?

Спасибо, Капил

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Вы переименовали обязательное поле вашей модели в txt ....

Фреймворк отображает html-поля по имени в свойствах вашего класса, так как в вашем классе нет txtFirstName, он не может автоматически отобразить их. (поскольку имя поля html и имя свойства модели должны совпадать для привязки)

если вы сделаете следующее, он будет привязан правильно

<%=Html.TextBoxFor(model => Model.FirstName)%>

[HttpPost]
public ActionResult Edit(ClsUser myObject)
{
    var x = myObject.FirstName; // this will now have a value
}

Если вы хотите использовать переименованное поле, т. Е. {Id = "txtFirstName"}, то вы можете создать новый класс и привязать к нему, как в:

public class ClsUserReturn
{ 
    public string txtFirstName{get;set;}
}

и в вашем контроллере

[HttpPost]
public ActionResult Edit(ClsUserReturn myObject)
{
    var x = myObject.txtFirstName; // this will now have a value
}

или

Вы можете пойти дальше и определить пользовательское связующее, чтобы удалить txt или другие префиксы / s, если ваши стандарты имен требуют, чтобы вы использовали определенные префиксы txt / cbo / chk и т. Д.

0 голосов
/ 03 мая 2010

Вы пробовали DummyAction без параметра FormCollection? I.e.:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DummyAction(clsModel modelObject)
{
     // ...
}

Скорее всего, вам все равно это не понадобится, если вы используете clsModel в своем представлении.

...