UserId
コントローラー アクション内で既に変数を宣言しています。Request
再度から取得する必要はありません。
public class SearchController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult SearchUser(string UserId)
{
User user = ... go and fetch the user given the user id
// from wherever your users are stored (a database or something)
return View(user);
}
}
User
これで、クラスに強く型付けされたビューを作成し、結果を表示するセクションを作成できます。
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.User>"
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Demo</title>
</head>
<body>
<div align="center">
<% using (Html.BeginForm("SearchUser", "Search")) { %>
<table align="center">
<tr>
<td class="label">
Enter ID:
</td>
<td>
<input type="text" name="UserId" id="UserId" />
</td>
</tr>
<tr>
<td>
<button class="searchButton" id="searchButtong">Search</button>
</td>
</tr>
</table>
<% } %>
</div>
<hr />
<% if (Model != null) { %>
<!-- Display the User results here -->
<div>
<%= Html.DisplayFor(x => x.FirstName) %>
</div>
<div>
<%= Html.DisplayFor(x => x.LastName) %>
</div>
<% } %>
</body>
</html>
標準の HTML 技術を使用してこの機能を実装したので、AJAX を導入することで改善できます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Demo</title>
</head>
<body>
<div align="center">
<% using (Ajax.BeginForm("SearchUser", "Search", null, new AjaxOptions { UpdateTargetId = "results" })) { %>
<table align="center">
<tr>
<td class="label">
Enter ID:
</td>
<td>
<input type="text" name="UserId" id="UserId" />
</td>
</tr>
<tr>
<td>
<button class="searchButton" id="searchButtong">Search</button>
</td>
</tr>
</table>
<% } %>
</div>
<hr />
<div id="result"></div>
<!-- TODO: Adjust with the proper version of jQuery that you are using -->
<script src="<%= Url.Content("~/Scripts/jquery-1.7.1.min.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>" type="text/javascript"></script>
</body>
</html>
次に、コントローラー アクションが PartialView を返すようにします。
[HttpPost]
public ActionResult SearchUser(string UserId)
{
User user = ... go and fetch the user given the user id
// from wherever your users are stored (a database or something)
return PartialView(user);
}
定義する必要があること ( ~/Views/Search/SearchUser.ascx
):
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<mVCaPPLICATION1.mODELS.uSER>"
%>
<!-- Display the User results here -->
<div>
<%= Html.DisplayFor(x => x.FirstName) %>
</div>
<div>
<%= Html.DisplayFor(x => x.LastName) %>
</div>