Значение модели потеряно при обратной передаче - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть следующие модели:

class A
{
    // ...some properties

    public B InnerField { get; set; }
}

и

class B
{
    public int Id { get; set; }

    // ..other properties
}

и страница с моделью класса A, а внутри страницы у меня есть частичное представление, связанное с классом B внутри формы. Значение Id (в частичном представлении) правильно установлено на значение Id модели (отличное от 0), но когда я отправляю страницу, модель имеет значение Id 0. Значение Id не изменяется в компоненте или где-либо еще.

Страница

...other parts of main page

<%using (Html.BeginForm("ModifyHotel", "Hotel",
                   FormMethod.Post, new { enctype = "multipart/form-data"}))
   {%>  
     <% Html.RenderPartial("~/Views/Shared/ModifyBaseItem.ascx", 
                   new ModifyItemRequestBaseView() { ItemId = Model.Item.Id });%>
 <%}%>

...other parts of main page

Частичное представление

...other parts of partial view
<br/>      
    Add Photo: <%:Html.FileBoxFor(x => x.PhotoFile, null)%>            
    <br/>    
    Add Video: <%:Html.FileBoxFor(x => x.VideoFile, null)%>            
    <br/>
<input type="submit" value="Submit changes" /> 
...other parts of partial view

Что я могу сделать, чтобы сохранить ценность внутренней модели при создании сообщения?

Спасибо,

1 Ответ

2 голосов
/ 11 декабря 2011

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        A model = new A() { InnerField = new B() { Id = 5 }};
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(B model)
    {
        //on postback the model should have the value 5 here
        return View();
    }
}

Вид:

@model MvcApplication11.Models.A

@using (Html.BeginForm())
{
    @Html.Partial("_IndexForm", Model.InnerField)

    <input type="submit" />
}

Partial:

@model MvcApplication11.Models.B

@Html.EditorFor(m => m.Id)
...