私は自分の問題を検索して試しましたが、解決策が見つかりません。誰かが私のコードを修正するのを手伝ってくれるかどうか知りたいです。
ユーザーを編集するビューがあります。
@model MembershipUser
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
Username:
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.UserName)
</div>
<div class="editor-label">
Email:
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
</div>
<div class="editor-label">
Password:
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.Password)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
次に、コントローラーで、ユーザー情報を取得するためのアクションを実行します。
[Authorize(Roles = "Admins")]
public ActionResult Edit(string username)
{
var usu = Membership.GetUser(username);
return View(usu);
}
そして、ユーザーを更新できる別の。
[Authorize(Roles = "Admins")]
[HttpPost]
public ActionResult Edit(MembershipUser umtoupdate)
{
MembershipUserCollection iduser = Membership.GetAllUsers();
if(umtoupdate.Password != umtoupdate.ConfirmPassword)
{
alert = "Password dont match!";
return View("Users", "Admin");
}
else {
foreach (MembershipUser um in iduser) {
if (um.UserName == umtoupdate.UserName) {
Membership.DeleteUser(um.UserName, true);
// Attempt to register the new updated user
MembershipCreateStatus createStatus;
Membership.CreateUser(umtoupdate.UserName,
umtoupdate.Password,
umtoupdate.Email,
umtoupdate.PasswordQuestion,
umtoupdate.AnswerQuestion, true, null, out createStatus);
}
}
}
return View("Details", umtoupdate.UserName);
}
そして、このクラスでは、別のことを行うためのリストを作成する1つのコンストラクターを定義しました(パラメーターのないコンストラクターについて何かを教えてくれるので、ここに置きます)。
public AdminController()
{
foreach (MembershipUser member in iduser) {
UserEntity entity2 = new UserEntity();
entity2.Username = member.UserName;
entity2.Roles = "Users";
entity2.Email = member.Email;
for (int i = 1; i < iduser.Count; i++)
{
entity2.ID_client = i;
}
_entities.Add(entity2);
}
次に、ユーザーを編集するために、最初のビュー(情報を編集できる場所)に移動できますが、更新された情報を保存して2番目のビューに移動してユーザーを更新しようとすると、教えてくれます
"[MissingMethodExceptionこのオブジェクトにパラメーターなしのコンストラクターが定義されていません。"
誰かがそれを修正する方法を教えてもらえますか?Edit(string)を変更してstringパラメーターを削除したが、この場合はinfoユーザーを取得できず、パラメーターなしで別のビューを追加した場合、あいまいさのために機能しません。
ありがとう。
わかりました、ありがとうございます。パブリックコンストラクタがないことを知りませんでした。しかし、MembershipUserから別の継承クラス(たとえば、パブリックコンストラクターを使用したMyUser)を実行すると、
public ActionResult Edit(MyUser umtoupdate) {...}
ユーザー情報を取得しようとすると、別のビューでMyUserディクショナリの代わりにMembershipUserディクショナリを使用していることを教えてください
[Authorize(Roles = "Admins")]
public ActionResult Edit(string username)
{
var usu = Membership.GetUser(username);
return View(usu);
}
membeshipクラスを使用して、メンバーシップユーザーを返します。この場合、MyUser.GetUserは、Membershipのメソッドであるため、使用できません。
それを修正するにはどうすればよいですか?
どうもありがとう。