Mat*_*lay 5 asp.net-mvc asp.net-mvc-routing
如果用户使用http://www.mysite.com/Quote/Edit而不是http://www.mysite.com/Quote/Edit/1000访问我的网站会怎么样? 换句话说,他们没有为{指定值ID}.如果他们不这样做,我想显示一个漂亮的"未找到"页面,因为他们没有提供ID.我当前通过接受一个可以为null的int作为Controller Action中的参数来处理这个问题,它工作正常.但是,我很好奇是否有更标准的MVC框架处理方式,而不是我目前使用的代码(见下文).是一种更顺畅的方式来处理这个问题,还是这种方式很合适?
[HttpGet]
public ActionResult Edit(int? id)
{
if (id == null)
return View("QuoteNotFound");
int quoteId = (int)id;
var viewModel = new QuoteViewModel(this.UserId);
viewModel.LoadQuote(quoteId);
if (viewModel.QuoteNo > 0)
{
return View("Create", viewModel.Quote.Entity);
}
else
return View("QuoteNotFound");
}
Run Code Online (Sandbox Code Playgroud)
你的其他选择是
Edit动作;一种带有int id参数,另一种不带任何参数。Edit(int id)您的操作并让您的控制器的HandleUnknownAction方法在找不到您的实体时执行它应该执行的操作(这有点复杂)。但我最喜欢你的方法,因为它简单且能正确处理情况。
顺便说一句,您不需要该局部变量,您可以这样做以获得更好的可读性:
//...
if (!id.HasValue)
return View("QuoteNotFound");
var viewModel = new QuoteViewModel(this.UserId);
viewModel.LoadQuote(id.Value);
//...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |