在URL中传递参数返回NullReference

时间:2017-07-24 19:43:59

标签: c# asp.net-mvc

我可以用这个帮助。我有一个控制器动作,我已经修改为接受一个字符串。当我尝试在URL中传递字符串时,它仍然返回null。它假设要做的就是接受字符串,然后根据该字符串进行查询并在标头标签中返回用户的名字。我需要修改我的路线吗?

视图中的标题

<div class="nameBlock col-md-push-9">
    <h4>Welcome @ViewBag.HeaderName</h4>
</div>

控制器方法

public ActionResult Index(string LanID)
{
    var name =  db.UserInfoTable
                 .Where(x => x.Lan_Id == @LanID)
                 .Select(x => new UserViewModel
                 {
                     AppUserName = x.FirstName + " " + x.LastName
                 }).FirstOrDefault();
    ViewBag.HeaderName = name.AppUserName;

    return View();
}

1 个答案:

答案 0 :(得分:2)

除非您已设置路由以使用LanID参数执行某些操作,否则MVC模型绑定器将不知道如何处理它。因此,您应该更改要使用的URL,并使用查询字符串告诉MVC参数的名称:

localhost:(portnumber)/DevArea/Dev/Index?LanID={value}

或者为配置添加一个额外的路由,例如(这是来自内存所以可能需要调整):

routes.MapRoute(
    name: "LanID",
    url: "{area}/{controller}/{action}/{LanID}",
    defaults: new 
        {
            area = "DevArea", 
            controller = "Dev", 
            action = "Index"
        }
);