Asp.net mvc 4 如何获取get变量?
我制作了一个名为Asp.net mvc 4 如何获取get变量?,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我制作了一个名为LibraryController的控制器,它有一个名为Movie的ActionResult,它接受参数(intid) 我已尝试在RouteConfig.cs中添加以下路由: routes.MapRoute( name: "Movie", url: "Library/Movie/{id}", defaults: new { controller = "Library", action = "M
LibraryController
的控制器,它有一个名为Movie
的ActionResult
,它接受参数(intid)
我已尝试在RouteConfig.cs
中添加以下路由:
routes.MapRoute(
name: "Movie",
url: "Library/Movie/{id}",
defaults: new { controller = "Library", action = "Movie", id = (string)null }
);
但是在方法Movie(stringid)
id为null,即使我将浏览器重定向到/Library/Movie/1
怎么了?
MapRoute
是在Default
之前定义的,您应该使用UrlParameter。可选
否则,解析路由的内部成员很可能会使用null
调用您的操作/方法
路由可选参数值的正确实现为:
routes.MapRoute(
name: "Movie",
url: "Library/Movie/{id}",
defaults: new { controller = "Library",
action = "Movie",
id = UrlParameter.Optional }
);
您的控制器和操作应为:
public class LibraryController : Controller
{
public ActionResult Movie(string id)
{
// do something with id here
return View();
}
}
正如我在评论中提到的,尝试使用
id = UrlParameter.Optional or id ="MovieId" or id = ""
routes.MapRoute(
name: "Movie",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Library", action = "Movie", id = UrlParameter.Optional }
);
然后,您的控制器将如下所示:
public class LibraryController : Controller
{
public ActionResult Movie(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie m = _context.Movies.Find(id);
if (m == null)
{
return HttpNotFound();
}
return View(m);
}
}
这是你的真实代码吗?因为(int)null
不编译。。。您的操作中是否有(int?)null
和int?
?你们还有其他的定制路线吗?顺便说一下,有了这些给定的信息,我无法重新编写您的问题:在一个新的MVC4项目中,当我导航到/Library/Movie/1
时,我在id
中得到了正确的参数值1对不起,输入错误。。。它的绳子!编辑!杰森,你能发布你的控制器代码吗?我认为总的来说,您应该使用id=urlparmeter.Optional或id=“MovieId”。你想要什么样的网址?只有/Library/Movie/1?我相信nemesv是正确的,因为默认的路由和控制器索引/详细信息方法中的(int?id)将显示正确的结果。当然,您会希望通过ID获取您的电影对象。