使用变量外部switch语句+ asp.net mvc

nie*_*lsv 1 c# asp.net variables asp.net-mvc

在我的控制器中的索引操作中,我有:

public ActionResult Index(string sortOrder)
{
    var model;
    ViewBag.CitySortParm = String.IsNullOrEmpty(sortOrder) ? "City_desc" : "";
    switch (sortOrder)
    {
        case "City_desc":
            model = this.UnitOfWork.AddressRepository.Get().OrderBy(a => a.City);
            break;
    }
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我总是得到错误: Implicitly-typed local variables must be initialized

为什么这不起作用,我该如何解决这个问题呢?

Jon*_*eet 5

为什么这不起作用

两个原因:

  • 您正在尝试使用var而不指定初始值.你不能这样做 - 编译器无法推断出类型.
  • model当它可能没有被初始化时,你试图从变量中读取- 如果sortOrder 不是 City_desc你期望返回的那个?那种类型是什么?

我该如何解决这个问题?

这取决于你想要发生什么,如果sortOrder不是City_desc.计算出你想要返回的价值,并确保它已被退回.

基本上,你无法从局部变量读取,直到它被明确赋值 - 换句话说,直到编译器可以证明(通过C#的规则),当你到达那里时,它将被分配一个值.

在隐式类型方面 - 您是否总是在视图中使用相同的类型?如果是这样,只需明确声明类型model,以及修复明确的赋值部分.如果没有,我会考虑回国switch/ case声明-我不认为你的model局部变量实际上是帮助你多少.