我有一个链接,打开一个对话框,供用户添加个人资料。
我希望隐藏字段中存在数据
控制器调用此视图,但我不确定如何在控制器中填充模型,然后使用此视图中的模型来设置值属性。
这是我的控制器,你可以看到我正在使用ViewBag,我不想要那个。
public ActionResult EditUser()
{
try
{
MembershipUser membershipUser = Membership.GetUser(Request.QueryString["username"]);
ViewBag.user = membershipUser;
return PartialView();
}
catch (Exception e)
{
return Content("Error: " + e);
}
}
您能否帮我理解如何构建我的模型并在我的视图中使用它? 非常感谢...
答案 0 :(得分:4)
您所要做的就是将您创建的模型传递给View / Partial View的调用。所以在你的实例中而不是调用:
ViewBag.user = membershipUser
你应该使用:
return PartialView(membershipUser);
您只需要确保在您的视图中,您在顶部有@model
声明。这将是:
@model MembershipUser;
<p>@Model.SomeField</p>
答案 1 :(得分:1)
您只需将MembershipUser
传递给视图,然后将其用作模型即可。您的控制器操作方法将检索用户并将其返回到视图:
MembershipUser membershipUser = Membership.GetUser(Request.QueryString["username"]);
return PartialView("PartialViewName", membershipUser); // Specify the partial view name and pass the membership user as a model
然后在您的视图中添加@model
指令并访问MembershipUser
的属性:
@model MembershipUser
// If you want to use a hidden field for a property
@Html.HiddenFor(m => m.SomeProperty)
// Uses the default editor template for the data type to allow user to edit the property
@Html.EditorFor(m => m.SomeProperty)
// If you just want to show the property
@Model.SomeProperty
答案 2 :(得分:0)
您必须添加模型名称UserModel并在那里定义用户对象
public class UserModel
{
public User UserInfo { get; set; }
}
现在在EditUser.cshtml中添加@model UI.Web.App.Models.UserModel Topialview的顶部
之后也改变你的控制器代码 -
public ActionResult EditUser()
{
try
{
MembershipUser membershipUser = Membership.GetUser(Request.QueryString["username"]);
UserModel usermodel=new UserModel();
usermodel.UserInfo = membershipUser;
return PartialView(usermodel);
}
catch (Exception e)
{
return Content("Error: " + e);
}
}
它将从控制器中删除视图包。 希望这会对你有所帮助,如果有任何问题请告诉我。