所以我有一個默認的MembershipUser作爲一個屬性的UserDisplayModel,我試圖將整個視圖模型傳遞給控制器,但由於某種原因MembershipUser屬性和可能整個模型丟失。模型傳遞問題
我發現這一點,因爲我得到一個No parameterless constructor defined for this object
錯誤,除非我手動實例化顯示模型構造函數內的MembershipUser)。意思是第二個動作(下面發佈)嘗試創建一個新的UserDisplayModel和錯誤,因爲MembershipUser沒有默認的構造函數。
這裏是我的代碼:
型號
public class UserDisplayModel
{
public MembershipUser User { get; set; }
public UserDisplayModel(string id)
{
this.User = Membership.GetUser(id);
}
}
操作
public ActionResult Delete(string id)
{
UserDisplayModel model = new UserDisplayModel(id);
return PartialView("Delete", model);
}
[HttpPost]
public ActionResult Delete(UserDisplayModel model)
{
Membership.DeleteUser(model.User.UserName);
}
查看
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcWebRole1.Models.UserDisplayModel>" %>
<p>Are you sure you want to delete the following user?</p>
<h2><%: Model.User.UserName%></h2>
<% using (Html.BeginForm()) { %>
<p>
<%: Html.HiddenFor(model => model.User.UserName)%>
<input type="submit" value="Delete" class="small alert button" />
<input type="button" value="Cancel" class="small secondary button cancel-action" />
</p>
<% } %>
是否有可能有這個工作,還是asp.net只是不喜歡有內部模型的模型?還是我錯過了一些愚蠢的東西?
還有其他解決方案嗎?我希望能夠將表單提交後的整個模型傳遞給Edit操作。 – bitwiser
我的第二個解決方案(刷新我剛剛發佈它)將工作。對於刪除,你不需要整個'UserDisplayModel',只是一個匹配提交簽名的。對於後續操作的模型來說,它與*用於視圖的模型是不匹配的。 –
啊,那很好,我不知道你可以用這種替代模型。謝謝! – bitwiser