将数据从控制器传递到视图Asp.net MVC3时输入Null

将数据从控制器传递到视图Asp.net MVC3时输入Null,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,在我的控制器中,我传递一个id,将其存储在ViewBag中,然后从视图访问它,并给出一个空条目 这是控制器: public ActionResult Create(int referenceID) { ViewBag.id = referenceID; // ViewBag.type = type; // ViewBag.title = title; ViewBag.userID = new SelectList(db.U

在我的控制器中,我传递一个id,将其存储在ViewBag中,然后从视图访问它,并给出一个空条目

这是控制器:

  public ActionResult Create(int referenceID)
    {
       ViewBag.id = referenceID;
       //   ViewBag.type = type;
       // ViewBag.title = title;
        ViewBag.userID = new SelectList(db.UserProfiles, "userID", "firstName");
        return View();
    } 
这就是我如何从我的角度访问它

        @{ Model.referenceID = ViewBag.id ; }
当我准备/邀请/创建/1
它给了我一个空条目错误。

首先,您需要确保为路由表中的/Invitation/Create/{id}在global.asax…中配置了路由路径,即。在你的注册表中,使用global.asax的registerOutes方法…确保你有类似

  // Invitation/Create
        routes.MapRoute(
            "Create Invitation",
            "Invitation/Create/{id}",
            new { controller = "Invitation", action = "Create", id= 0 }
        );
如果Create方法中的referenceID是可选的…您需要将referenceID的类型更改为int吗?(可为null的int)…如下所示

public ActionResult Create(int? referenceID)
{
  // if referenceID is null then you may redirect the user to a view of your choice..
  // then what ever logic you may wanna write...
}
希望这有助于

更新:

您可以尝试将此地图路线代码移动为您的第一个地图路线代码吗


也许我应该更好地阅读您的问题…在您的创建操作方法中,您没有将任何模型返回到视图中…当您说model.referenceId…时,应该有一个从您的创建操作方法返回的模型(包含referenceId作为属性)…根据您提供的代码,该模型在您的案例中丢失了,我认为您的模型是空的,因为您的操作没有向视图传递任何内容。您是否尝试过在页面上显示ViewBag.id?

首先,确切的错误是什么?其次,为什么要在视图中指定模型特性?你的模型有referenceID属性吗?是的,模型有referenceID!!我可以从控制器设置它吗。假设我有两个create方法,一个用于get和post。从我看到的模型==null。您的控制器不返回任何内容。应该是返回视图(someViewModel)是的,路由已配置,引用ID未配置optional@iyadalaqel你能发布你的视图和路由代码吗…我是说整个路由代码。。。?同时查看我的更新…当然,这是默认设置,我没有更改它。还有许多其他方法使用相同的Controller/Action/id格式,它们是working@iyadalaqel也许我应该更好地阅读您的问题…在您的Create action方法中,您没有将任何模型返回到视图…当您说model.referenceId…时,应该有一个模型(包含referenceId作为属性)从创建操作方法返回。。。