我正在阅读 MVC 书籍并按照其中的示例创建一个音乐商店项目。
在其中一个示例中,它创建了一个控制器,在 URL 中调用一个带有参数的操作方法。我发现了一些有趣的东西。这是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcMusicStore.Controllers
{
public class StoreController : Controller
{
//
// GET: /Store/
public string Index()
{
return "Hello from Store.Index()";
}
// GET: /Store/Browse?genre=?Disco
public string Browse(string genre)
{
string message =
HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre);
return message;
}
//
// GET: /Store/Details/5
public string Details(int id)
{
string s = "Store.Details, ID = " + id;
return s;
}
}
}
在最后一个方法“Details(int id)”中,如果我使用类似的 URL 调用它
http://localhost:4961/store/details/6
没关系。但是,如果我将参数的名称从“id”更改为“i”,编译器不会抱怨,但是当我运行它时,我会收到一条我无法解释的错误消息。部分错误信息是这样的:
参数字典包含“MvcMusicStore.Controllers.StoreController”中方法“System.String Details(Int32)”的不可空类型“System.Int32”的参数“i”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:parameters 描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
那么如果我只使用“i”作为整数有什么问题呢?