я не искал и пытался о моей проблеме, и я не могу найти решение, я хочу знать, если кто-то может помочь мне исправить мой код ..не конструктор без параметров определяются для этого объекта MVC3
У меня есть вид на редактировать пользователей ..
@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) и удаляю строковый параметр, но в этом случае я не могу получить информацию пользователя, и если я добавлю другое представление без параметра, он не будет работать для двусмысленности.
Спасибо.
ОК спасибо, что я не знал, что у него нет публичного конструктора! Но если я сделать еще один класс наследует от 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, потому что это метод от членства!
Что я могу сделать, чтобы исправить это?
Большое спасибо.