したがって、デフォルトのMembershipUserをプロパティとして持つUserDisplayModelがあり、ビューモデル全体をコントローラーに渡そうとしていますが、何らかの理由でMembershipUserプロパティとモデル全体が失われる可能性があります。
No parameterless constructor defined for this object
表示モデル コンストラクター内で MembershipUser を手動でインスタンス化しない限り、エラーが発生するため、これを発見しました)。MembershipUser にはデフォルトのコンストラクターがないため、2 番目のアクション (以下に投稿) が新しい UserDisplayModel とエラーを作成しようとしたことを意味します。
これが私のコードです:
モデル
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はモデル内にモデルを持つのが好きではありませんか? それとも、ばかげたことを見逃しただけですか?