在Controller中构建模型

时间:2012-11-22 23:39:32

标签: asp.net asp.net-mvc build model asp.net-mvc-4

我有一个链接,打开一个对话框,供用户添加个人资料。

我希望隐藏字段中存在数据

控制器调用此视图,但我不确定如何在控制器中填充模型,然后使用此视图中的模型来设置值属性。

这是我的控制器,你可以看到我正在使用ViewBag,我不想要那个。

public ActionResult EditUser()
    {
        try 
        {
            MembershipUser membershipUser = Membership.GetUser(Request.QueryString["username"]);
            ViewBag.user = membershipUser;

            return PartialView();

        }
        catch (Exception e)
        {   
            return Content("Error: " + e);
        }
    }

您能否帮我理解如何构建我的模型并在我的视图中使用它? 非常感谢...

3 个答案:

答案 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);
        }
    }

它将从控制器中删除视图包。 希望这会对你有所帮助,如果有任何问题请告诉我。