gpt4 book ai didi

asp.net-mvc - 如何处理路由上的 null {id}?

转载 作者:行者123 更新时间:2023-12-02 01:42:39 26 4
gpt4 key购买 nike

如果用户使用 http://www.mysite.com/Quote/Edit 访问我的网站怎么办?而不是http://www.mysite.com/Quote/Edit/1000换句话说,它们没有指定 {id} 的值。如果他们不这样做,我想显示一个漂亮的“未找到”页面,因为他们没有提供 ID。我目前通过接受可为空的 int 作为 Controller 操作中的参数来处理此问题,并且工作正常。然而,我很好奇是否有更标准的 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");
}

最佳答案

您的其他选择是

  • 有两个 Edit 操作;一个以 int id 作为参数,另一个不带任何参数。
  • 仅将 Edit(int id) 作为您的操作,并让 Controller 的 HandleUnknownAction 方法在找不到您的实体时执行其应该执行的操作(这是一个有点复杂)。

但我最喜欢你的方法,因为它简单且能正确处理情况。

顺便说一句,您不需要该局部变量,您可以这样做以获得更好的可读性:

//...
if (!id.HasValue)
return View("QuoteNotFound");

var viewModel = new QuoteViewModel(this.UserId);
viewModel.LoadQuote(id.Value);
//...

关于asp.net-mvc - 如何处理路由上的 null {id}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com