我已经搜索并尝试了我的问题,但我找不到解决方案,我想知道是否有人可以帮助我修复我的代码..
我有一个编辑用户的视图..
@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);
}
在这个类中,我定义了一个构造函数,它创建一个列表来做另一件事(我放是因为它告诉我一些关于无参数构造函数的事情)..
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);
}
然后,我去编辑一个用户,我可以去第一个视图(可以在哪里编辑信息)但是当我尝试保存更新的信息并去第二个视图更新用户时,它告诉我
“[MissingMethodException 没有为此对象定义无参数构造函数。”
有人可以告诉我如何解决吗?如果我更改 Edit(string) 并删除 string 参数,但在这种情况下我无法获取 info 用户,并且如果我添加另一个没有参数的视图,它不会因为歧义而工作。
谢谢。
好的,谢谢,我不知道它没有公共构造函数!但是,如果我从 MembershipUser 做另一个继承类(例如,如你所说的 MyUser,使用公共构造函数)并且我做
public ActionResult Edit(MyUser umtoupdate) {...}
当我尝试获取用户信息时,告诉我我使用 MembershipUser 字典而不是 MyUser 字典,因为使用另一个视图
[Authorize(Roles = "Admins")]
public ActionResult Edit(string username)
{
var usu = Membership.GetUser(username);
return View(usu);
}
使用 membeship 类并返回一个会员用户,在这种情况下我不能使用 MyUser.GetUser,因为它是 Membership 的一种方法!
我能做些什么来解决它?
非常感谢。