繁体   English   中英

c# razor 动作结果参数

[英]c# razor actionresult parameter

我是 mvc razor 的新手,所以请原谅我对这个主题不熟悉。 如果我理解得很好,就是 controller 获得 url 参数,如下所示:

  // Get: /User/23
  public ActionResult(int? id) { 
       return View("User", id);
  }

所以基本上,这个ActionResult获取 url 中的参数并将其发送到某个地方。 但是哪里?

另外,假设我有一个存储库,我在其中返回IQueryable<> class 中的所有用户。 如果 id 不是 null 它只得到相关的结果,如果不是,它得到整个列表。 因此,我想向视图返回一个列表并显示结果。 我怎样才能做到这一点? 为了便于理解,我举了以下例子:

// I want to populate this list based on the id in the actionresult
@foreach(var u in MyList) { 
   name: @u.Name <br>
   lastname: @u.LastName <hr>
}

无论您作为第二个参数返回什么,都是传递到视图中的 model。 然后,您可以在 WebViewPage 中继承 razor 页面,或者更好地使用 @model 关键字。 传入的数据可通过“模型”变量在页面内使用。

之后使用的好例子是http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc-3-new-model-directive-support-in-razor.aspx

return View在基础 class, Controller中调用辅助方法。

它将返回一个ViewResult ,参数是传递给视图的 model 。

因此,如果您想通过用户列表,您可以这样做:

public ActionResult Users()
{
   var users = _repository.FindAllUsers();
   return View(users);
}

请注意我是如何遗漏视图名称的,因此默认约定是根据操作名称查找视图,在本例中Users.cshtml 始终尝试使用约定而不是配置——这就是 MVC 的伟大之处。

@model IEnumerable<YourApp.Models.User>
@Html.DisplayForModel()

Shared\DisplayTemplates\User.cshtml

@Html.LabelFor(model => model.Name)
@Html.DisplayFor(model => model.Name)
@Html.LabelFor(model => model.LastName)
@Html.DisplayFor(model => model.LastName)

请注意我没有使用foreach循环 - 我再次使用自定义显示模板 - 约定优于配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM