Модель скоросшивателя - PullRequest
       23

Модель скоросшивателя

1 голос
/ 04 октября 2011

Почему у меня всегда так много проблем с подшивкой модели ??У меня есть следующий контроллер:

namespace X.Web.Controllers
{
    public class ExpertsVM
    {
        public string GivenName;
        public string Surname;
    }

    public class AuthController : Controller
    {
        [HttpPost]
        public ActionResult RegisterExpert(ExpertsVM v)
        {

и мой взгляд выглядит следующим образом:

@using X.Web.Controllers
@model ExpertsVM

@using (Html.BeginForm("RegisterExpert", "Auth"))
{
    @Html.EditorFor(x => x.GivenName)
    @Html.EditorFor(x => x.Surname)

, поэтому форма отображается так:

<form action="/Auth/RegisterExpert" method="post">
<input class="text-box single-line" id="GivenName" name="GivenName" type="text" value="" />
<input class="text-box single-line" id="Surname" name="Surname" type="text" value="" />

, но когдадействие вызывается, v содержит все нули.если я объявляю действие следующим образом:

[HttpPost]
public ActionResult RegisterExpert(FormCollection f)
{

Я вижу все значения ... так что я здесь не так делаю?

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

Я не уверен на 100%, но я бы использовал свойство вместо открытого поля.

try

public class ExpertsVM
{
    public string GivenName {get;set;}
    public string Surname {get;set;}
}
2 голосов
/ 04 октября 2011

Связыватель модели ищет общедоступные свойства модели. Ответ VdesmedT верен, но я добавляю это, чтобы добавить акцент к сути (я не был уверен на 100%)

Вы также можете сэкономить один из использованных показателей, выполнив:

@model X.Web.Controllers.ExpertsVM

Я проголосовал за ответ VdesmedT. Вы должны отметить это как ответ.

...