2011-12-10 69 views
0

我有以下型號:模型值丟失在回發

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 

我能做些什麼來保持內部模型的價值後作出什麼時候?

感謝,

+0

包括查看代碼以幫助我們幫助您:) – Romias

回答

2

控制器:

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" /> 
} 

部分:

@model MvcApplication11.Models.B 

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

如果添加該行,我會得到:**相對虛擬路徑'EditorTemplates/1.aspx'不允許在這裏。**(我不使用Razor語法... ) –

+1

它通過在頁面上添加一個Html.HiddenFor(m => m.Id)來工作,所以我會標記你的答案,因爲它具有類似的邏輯。 –