Asp.net mvc ASP.NET MVC控制器未使用ModelView向PartialView传递正确的值

Asp.net mvc ASP.NET MVC控制器未使用ModelView向PartialView传递正确的值,asp.net-mvc,Asp.net Mvc,我正在尝试创建CustomMembershipProvider。当用户单击登录时,我想显示欢迎用户名!在共享/_layout.cshtml中包含的PartialView中 以下是控制器类: [ChildActionOnly] public ActionResult WelcomeMessage() { var userName = this.HttpContext.Session["LoggedInUser"]; WelcomeViewMo

我正在尝试创建CustomMembershipProvider。当用户单击登录时,我想显示欢迎用户名!在共享/_layout.cshtml中包含的PartialView中

以下是控制器类:

    [ChildActionOnly]
    public ActionResult WelcomeMessage()
    {
        var userName = this.HttpContext.Session["LoggedInUser"];
        WelcomeViewModel wView = new WelcomeViewModel();

        if (userName != null)
        {
            User user = this.db.Users.FirstOrDefault(x => x.UserName == userName);
            wView.userId = user.Id;
            wView.Message = user.UserName;

        }
        return PartialView(wView);
    }
以下是PartialView代码:

    @model MvcApplication1.ViewModels.WelcomeViewModel
    @Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account",  new { id = Model.userId })
我获得了正确渲染的视图,但是当我单击超链接时,出现以下错误:

参数字典包含“MVCAPApplication1.Controllers.AccountController”中方法“System.Web.Mvc.ViewResult DetailsInt32”的非null类型“System.Int32”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数

似乎使用id=null调用了编辑操作,但是用户名显示正确。我最初使用ViewBag,并根据SO解决方案切换到ViewModel。 提前谢谢。

试试这个

@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", new { id = Model.userId }, null)
问题是您设置了ActionLink方法的htmlAttributes参数。

试试这个

@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", new { id = Model.userId }, null)
问题是您设置了ActionLink方法的htmlAttributes参数。

您遇到了@Html.ActionLink的错误,您需要这个

基本上,您需要传递htmlAttributes参数来点击正确的重载,如果您不需要设置任何重载,您可以将其作为null传递。

您点击的@Html.ActionLink是错误的,您需要这个


基本上,您需要传递htmlAttributes参数以命中正确的重载,如果不需要设置任何重载,您可以将其作为null传递。

好吧,看起来您使用了错误的重载,试一试:

@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", 
   new { id = Model.userId }, 
   null)

看来你用错了超负荷,试一试:

@Html.ActionLink("Welcome " + Model.Message + "!", "Edit", "Account", 
   new { id = Model.userId }, 
   null)

动作是编辑还是细节?动作是编辑还是细节?@Purusartha Awesome:很高兴我能这么做help@Purusartha真棒:很高兴我能帮忙