【问题标题】:The parameters dictionary contains a null entry for parameter 'testId' of non-nullable type 'System.Int32'参数字典包含不可为空类型“System.Int32”的参数“testId”的空条目
【发布时间】:2013-04-11 07:46:04
【问题描述】:

我正在尝试在我的控制器中调用一个操作:

使用这个网址: http://localhost:5345/ManageTest/Details/5

[Authorize]
public class ManageTestController : Controller
{

public ActionResult Details(int testId)
    {

参数字典包含“MAMAdmin.Controllers.ManageTestController”中方法“System.Web.Mvc.ActionResult Details(Int32)”的不可为空类型“System.Int32”的参数“testId”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数

【问题讨论】:

    标签: c# asp.net-mvc web-services


    【解决方案1】:

    看起来您正在尝试映射到默认路由,即:

    RouteTable.Routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
    

    为此,请将ActionResult 中的参数名称更改为id

    public ActionResult Details(int id)
    

    否则您必须使用 URL:

     http://localhost:5345/ManageTest/Details?testId=5
    

    【讨论】:

    • @DarrenDavies 哈哈,我有一周的假,所以我没有使用它(除了登录狂热徽章):)
    • 谢谢!最后一个答案不是“你没有在http请求中传递参数”。这个答案应该收到所有其他类似答案的累积投票,因为它实际上包含正确的实现。
    • @Luc 没问题,很高兴它帮助了你:)
    猜你喜欢
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多