Parameters dictionary contains a null entry for parameter

六眼飞鱼酱① 提交于 2019-12-12 14:04:57

问题


I am having two view pages using the same controller and model as a way to change the page layout but i am having trouble displaying my second page. This is my error message: The parameters dictionary contains a null entry for parameter id of non-nullable type for method system.web.mvc.actionaresult ListView(int32) in UserController

Not sure what is causing the problem i used the same code for the first view page(working) except just changing the view layout.

First View

<div>
<a href="/Roster/ListView">Click Here for List view</a>
</div>

<section id="users" data-bind="foreach: Users">
    <div id="nameImage">
        <figure id="content">
            <img width="158" height="158" alt="Gravatar" data-bind="attr:{src: GravatarUrl}"/>
            <figcaption>
                <a title="Email" id="emailIcon" class="icon-envelope icon-white" data-bind="attr:{'href':'mailto:' + Email()}"></a>
                <a title="Profile" id="profileIcon" class="icon-user icon-white"></a>
            </figcaption>
        </figure>
        <p data-bind="text:Name"></p>
        </div>
    </section>
</section>

List View

<div class="accordion-inner">
<div data-bind="foreach: Users">
    <div>
        <img width="158" height="158" alt="Gravatar" data-bind="attr:{src: GravatarUrl}"/>
        <p data-bind="text:Name"></p>
    </div>
</div>

Controller

 public ActionResult View(int id)
    {
        // get the menu from the cache, by Id
        ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id);
        ViewBag.UserApiURL = "/api/User/" + id.ToString();
        return View(); 
    }

    public ActionResult ListView(int id)
    {
        // get the menu from the cache, by Id
        ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id);
        ViewBag.UserApiURL = "/api/User/" + id.ToString();
        return View();
    }
}

Api controller

private UserService _userService = new UserService();

    public IEnumerable<User> Get(int? id)
    {
        if (id.HasValue)
        {
            return _userService.GetUsers(id.Value);
        }
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

回答1:


The URL /Roster/ListView is missing an ID value. You'll need to either:

  1. Change the URL to something like /Roster/ListView/123
  2. Change the action method to allow a nullable integer by changing the type from int to int?. Then in the action method you need to check if the id parameter is null or not and deal with that appropriately, such as by returning an error, or just ignoring the id.



回答2:


You write following link href="/Roster/ListView" but action ListView require parameter id, which is missing here.



来源:https://stackoverflow.com/questions/15893036/parameters-dictionary-contains-a-null-entry-for-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!