簡體   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