[英]Data Binding in ASP.NET MVC
我知道這將是一個基本問題,但我是ASP.Net MVC的新手。 我已經使用LINQ從數據庫中獲取了數據,但是有一個問題。 我想將該數據與自定義Web表單的輸入字段綁定。 (我正在使用MVC)。 我想用獲取的數據填充Webform的輸入字段。 我正在使用EF數據庫優先方法。 我的控制器和視圖已附加。
控制器動作方法
public class HomeController : Controller
{
public ActionResult Index()
{
AutoRTGSEntities_1 dc = new AutoRTGSEntities_1();
//dc.policies.Where(cb => cb.Section_Key.Contains("SenderBIC"));
return View(dc.policies.Where(cb => cb.Policy_Section.Contains("RTGS")).ToList()); //get RTGS policy section data
}
}
視圖
@model IEnumerable<Swift_MT_103.policy>
@{
ViewBag.Title = "Home Page";
}
<div> @Model{ @Html.TextBoxFor(x => x.data_Value)) } </div>
<div> <input type="text" name="ReceiverBIC" id="ReceiverBIC" /> </div>
這是一個非常基本的示例。 假設您有以下課程:
public class User
{
public int Id { get; set; }
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "E-mailaddress")]
public string E-mail { get; set; }
}
在控制器中,您可以找到用戶:
public ActionResult Index(int id)
{
var user = Db.Users.FirstOrDefault(x => x.Id == id);
if(user != null)
{
return View(user);
}
//Return to the 'Error' view as no user was found
return View("Error");
}
您還需要一個視圖以在屏幕上顯示所有內容。 使其成為強類型視圖,這樣您就可以將模型傳遞給它。 此類將包含您要傳遞給視圖的所有數據。 視圖的代碼:
//This line lets the view know which class represents the model
@model User
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
使用Razor語法而不是純HTML,可以很容易地構造表單元素並將其綁定到相應的數據。 在這種情況下,標簽將在User
類中Display
屬性的值,並且用戶的值將填充在文本框中。
更多閱讀:
更新:
如果您有對象列表,則需要在視圖中枚舉它們:
@model IEnumerable<string>
@foreach (var value in Model)
{
<div>@value</div>
}
如果模型是一個類並且具有一個列表屬性:
//Let's say a user has lots of names
public class User
{
public int Id { get; set; }
public List<string> Names { get; set; }
}
//View:
@model User
@Html.TextBoxFor(m => m.Id)
@foreach (var name in Model.Names)
{
<div>@name</div>
}
嘗試實現正確的ASP.NET MVC體系結構。 要完成此操作,您需要在視圖中使用適當的Razor( .cshtml
類型)語法。 最佳實踐:
在Model
目錄中創建一個專用的ViewModel類。 例如,您可以將其稱為CustomerCreditTransferViewModel
。 它應包含您要在頁面上任何位置顯示/編輯的所有屬性。
在Action中從DBContext選擇數據后,創建一個CustomerCreditTransferViewModel
實例,並從結果中填充所有字段。
更新您的視圖以使用@model CustomerCreditTransferViewModel
而不是Swift_MT_103.policy
(相信我,這將使您的生活更加輕松)
將原始HTML代碼復制粘貼到頁面中,然后開始查找要綁定的所有字段,例如,文本字段( <input type="text" name="accountno" value="" />
)並將其替換為Razor數據綁定的語法( @Html.TextBoxFor(x => x.AccountNo)
)。 如果操作正確,則應立即進行填充。
下一步可能是POST。 遵循教程中的基本MVC Post技術。 再次確保發布值的類型為CustomerCreditTransferViewModel
,以便您可以輕松地驗證值並映射回Swift_MT_103.policy
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.