2013-12-11 73 views
0

爲所有模型公共屬性創建隱藏字段的最佳方法是什麼?所有模型屬性的隱藏字段

我期待這樣的事情:

@Html.HiddenFor(t => t) 
+1

你想這麼做的原因是什麼? – Shyju

+0

[在C#中通過對象屬性循環]的可能重複(http://stackoverflow.com/questions/957783/loop-through-an-objects-properties-in-c-sharp) – Curt

+0

如果您希望這種情況自動發生,你將需要使用反射。 – Maess

回答

2

我想你要做到這一點,當你在編輯界面更新實體記錄,以獲得其他屬性值的原因。您可能正在編輯一些屬性(並且只有那些屬於您的表單),並且您可能會獲得null以用於所有其他不屬於表單的屬性。

你應該做的是,只將PostID屬性保留在表單的隱藏字段中,並在你的HttpPost操作方法中,讀取實體並僅更新從表單發送並保存的那些屬性。

[HttpPost] 
public ActionResult Edit(Post model) 
{ 
    var existingPost=repositary.GetPost(model.PostID); 

    //Set only the properties posted from form to the existingPost entity 
    existingPost.Title=model.Title; 

    var result= repositary.SavePost(existingPost); 
    return RedirectToAction("PostSaved",new {@id=model.PostID}); 
} 
0

您可以使用http://jqueryui.com/dialog/來顯示確認窗口。點擊確定按鈕指定表單提交。 請看下面的例子:

@using(Ajax.BeginForm("Edit", "Post", null, new AjaxOptions { HttpMethod = "POST" }, new {@id = "frmPost" , enctype = "multipart/form-data" })) 
{ 
    @Html.EditorForModel() 
} 

<div id="dialog">Some confirmation</div>   

<script> 
    $("#dialog").dialog({ 
     modal: true, 
     buttons: { 
      Ok: function() { 
       $("#frmPost").submit(); 
       $("#dialog").dialog('close'); 
      }, 
      Cancel: function() { 
       $(this).close(); 
      } 
     } 
    }); 
</script>