Как получить доступ к значению hiddenField в действии контроллера обратной передачи mpc asp.net? - PullRequest
5 голосов
/ 10 марта 2011

Можем ли мы получить доступ к значению asp:Label непосредственно в действии контроллера обратной передачи MVC? Я также хотел бы знать, как получить доступ к значению hiddenField в действии контроллера обратной передачи ASP.NET MVC.

Ответы [ 2 ]

18 голосов
/ 10 марта 2011

В ASP.NET MVC вы не используете теги <asp:..., но вы можете попробовать поместить любое количество входов в форме в действие контроллера, где класс CustomViewModel может связываться с данными и позволяет вам манипулироватьдалее.

public class CustomViewModel
{
    public string textbox1 { get; set; }
    public int textbox2 { get; set; }
    public string hidden1 { get; set; }
}

Например, если вы использовали синтаксис Razor в MVC 3, ваш View мог бы выглядеть так:для вашего класса ViewModel, скажем, он называется Сохранить, может выглядеть так:

[HttpPost]
public ActionResult Save(CustomViewModel vm)
{
    string name = vm.textbox1;
    int age = vm.textbox2;
    string hiddenText = vm.hidden1;
    // do something useful with this data
    return View("ModelSaved");
}
4 голосов
/ 10 марта 2011

В ASP.NET MVC серверные элементы управления, такие как asp:Label, никогда не должны использоваться, поскольку они полагаются на ViewState и PostBack, которые больше не существуют в ASP.NET MVC.Таким образом, вы можете использовать HTML-помощники для генерации полей ввода.Например:

<% using (Html.BeginForm()) { %>
    <%= Html.LabelFor(x => x.Foo)
    <%= Html.HiddenFor(x => x.Foo)
    <input type="submit" value="OK" />
<% } %>

и иметь действие контроллера, которое получит сообщение:

[HttpPost]
public ActionResult Index(SomeViewModel model)
{
    // model.Foo will contain the hidden field value here
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...