当输入是 URL 中的 int 参数时,如何防止浏览器返回 int 的默认值?
How to prevent Browser returning default value of int when input is an int parameter in the URL?
public IActionResult Info(int id)
{
return Content(id + "");
}
每当我输入 Jan/Info/2 浏览器时 returns 我的值是 0。这是为什么?我该如何解决?我正在使用 MVC 核心 1.1。 UrlParameter.Optional 也因为某些原因无法访问 Visual Studio 中。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "Naam",
template: "{controller=Jan}/{action}/{voornaam}");
routes.MapRoute(
name: "Info",
template: "{controller=Jan}/{action}/{id}");
}
public IActionResult Naam(string voornaam)
{
return Content(voornaam);
}
因为您已经注册了另一个与确切模式匹配的路由。根据该注册,它将读取值并分配给 voornaam
参数。
所以这应该有效
public IActionResult Info(int voornaam)
{
return Content(voornaam + "");
}
由于您的操作方法具有唯一的名称,因此您无需为每个操作方法指定自定义路由。默认路由注册就可以了。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "defaultroutes",
template: "{controller}/{action=Index}/{id?}",
defaults: new { controller = "jan" });
});
假设您的控制器看起来像这样
public class JanController : Controller
{
public IActionResult Info(int id)
{
return Content(id + " : id");
}
public IActionResult Naam(string voornaam)
{
return Content(voornaam+ ": param value");
}
}
当您访问 yourSite/jan/info/123
时,Info
方法将处理它,而当您请求 yourSite/jan/Naam?voornaam=shyju
时,Naam 方法将处理它。
如果您想支持 url 结构,例如 yourSite/jan/Naam/shyju
而不是显式查询字符串,您可以在该操作方法上使用属性 routing
指定路由模式
public class JanController : Controller
{
public IActionResult Info(int id)
{
return Content(id + " id");
}
[Route("[controller]/[action]/{voornaam}")]
public IActionResult Naam(string voornaam)
{
return Content(voornaam + " : param value");
}
}
现在,当您请求 yourSite/jan/Naam/shyju
时,将调用 Naam 方法,并且字符串 "shyju" 将在 voornaam
参数
中可用
public IActionResult Info(int id)
{
return Content(id + "");
}
每当我输入 Jan/Info/2 浏览器时 returns 我的值是 0。这是为什么?我该如何解决?我正在使用 MVC 核心 1.1。 UrlParameter.Optional 也因为某些原因无法访问 Visual Studio 中。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "Naam",
template: "{controller=Jan}/{action}/{voornaam}");
routes.MapRoute(
name: "Info",
template: "{controller=Jan}/{action}/{id}");
}
public IActionResult Naam(string voornaam)
{
return Content(voornaam);
}
因为您已经注册了另一个与确切模式匹配的路由。根据该注册,它将读取值并分配给 voornaam
参数。
所以这应该有效
public IActionResult Info(int voornaam)
{
return Content(voornaam + "");
}
由于您的操作方法具有唯一的名称,因此您无需为每个操作方法指定自定义路由。默认路由注册就可以了。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "defaultroutes",
template: "{controller}/{action=Index}/{id?}",
defaults: new { controller = "jan" });
});
假设您的控制器看起来像这样
public class JanController : Controller
{
public IActionResult Info(int id)
{
return Content(id + " : id");
}
public IActionResult Naam(string voornaam)
{
return Content(voornaam+ ": param value");
}
}
当您访问 yourSite/jan/info/123
时,Info
方法将处理它,而当您请求 yourSite/jan/Naam?voornaam=shyju
时,Naam 方法将处理它。
如果您想支持 url 结构,例如 yourSite/jan/Naam/shyju
而不是显式查询字符串,您可以在该操作方法上使用属性 routing
public class JanController : Controller
{
public IActionResult Info(int id)
{
return Content(id + " id");
}
[Route("[controller]/[action]/{voornaam}")]
public IActionResult Naam(string voornaam)
{
return Content(voornaam + " : param value");
}
}
现在,当您请求 yourSite/jan/Naam/shyju
时,将调用 Naam 方法,并且字符串 "shyju" 将在 voornaam
参数