【发布时间】:2017-05-16 17:48:13
【问题描述】:
我希望控制器接受 /Details/1 和 /User/xxx 但不接受 /User/
我尝试如下=>
public ActionResult Details( Nullable<int> id, Nullable<string> name)
{
if (((id ?? 0) == 0) && name == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Instructor instructor = db.Instructors.Where(x => x.InstructorId == id || x.faculty_name.Equals(name)).SingleOrDefault();
if (instructor == null)
{
return HttpNotFound();
}
ViewBag.faculty_active = MyCustomFunctions.UserActivity();
return View(instructor);
}
我希望(上面的豪宅)用户可以通过 /Details/1 或 /Details/xxx 但不能通过 /Details/ 这就是我添加条件检查的原因=>
if (((id ?? 0) == 0) && name == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
但我想运行编译器给我的错误代码,例如=> 我在想那是完美的,但我不知道为什么做错了=我试过=>
public ActionResult Details( int? id, string? name)
{
}
这也给了我同样的错误。我搜索了这个问题,我发现=> ASP.NET MVC Overriding Index action with optional parameter
我什么都不懂。这就是我提出这类问题的原因。 如果有人可以帮助我,这将是非常完整的吗?
【问题讨论】:
-
string已经可以为空。但是您不能将 2 个可空值作为参数并使用路由(您将只能生成/Details?name=xxx- 如果您要使用/Details/xxx两个参数将是null并且您的代码将始终返回BadRequest) -
@StephenMuecke public ActionResult Details(int id = 0, string name = null) 是向我返回一个错误的请求....有什么办法可以解决这个问题或者我需要遵循其他结构
-
只有一个参数(
string),然后检查是否可以解析为int -
@StephenMuecke 我能理解你能给我举个小例子吗?
-
给我 20 分钟,我会添加答案。
标签: c# asp.net asp.net-mvc asp.net-mvc-4