簡體   English   中英

ASP.NET MVC中的數據綁定

[英]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> 

其余的是HTML和CSS。 快照已附加。 定制視圖

這是一個非常基本的示例。 假設您有以下課程:

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類型)語法。 最佳實踐:

  1. Model目錄中創建一個專用的ViewModel類。 例如,您可以將其稱為CustomerCreditTransferViewModel 它應包含您要在頁面上任何位置顯示/編輯的所有屬性。

  2. 在Action中從DBContext選擇數據后,創建一個CustomerCreditTransferViewModel實例,並從結果中填充所有字段。

  3. 更新您的視圖以使用@model CustomerCreditTransferViewModel而不是Swift_MT_103.policy (相信我,這將使您的生活更加輕松)

  4. 將原始HTML代碼復制粘貼到頁面中,然后開始查找要綁定的所有字段,例如,文本字段( <input type="text" name="accountno" value="" /> )並將其替換為Razor數據綁定的語法( @Html.TextBoxFor(x => x.AccountNo) )。 如果操作正確,則應立即進行填充。

  5. 下一步可能是POST。 遵循教程中的基本MVC Post技術。 再次確保發布值的類型為CustomerCreditTransferViewModel ,以便您可以輕松地驗證值並映射回Swift_MT_103.policy類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM