ASP.NET MVC Controller向View傳值的幾種方式


1)ViewBag

  ViewBag是動態類型,使用時直接添加屬性賦值即可 ViewBag.myName

    控制器代碼:

1 public ActionResult Index()  
2 {  
3     ViewBag.name = "梁順盛";  
4     ViewBag.message = "歡迎使用MVC設計模式~~";  
5     return View();  
6 }  

視圖代碼:

<div>          
    <!--利用HtmlHelper創建TextBox時,使用名稱與ViewBag中的Key一致, 就會自動實現值綁定-->  
    @Html.TextBox("name")  
    @ViewBag.message          
</div> 

2)ViewData

     ViewData只對當前Action有效,它是一個字典集合,通過key值讀取對應的value;

     控制器代碼:

public ActionResult Index()  
        {  
            ViewData["name"] = "梁順盛";  
            ViewData["message"] = "歡迎使用MVC設計模式~~";  
            return View();  
        }  

視圖代碼:

<div>          
        <!--利用HtmlHelper創建TextBox時,使用名稱與ViewData中的Key一致, 就會自動實現值綁定-->  
        @Html.TextBox("name")  
        @ViewData["message"]          
    </div> 

3)TempData

    使用TempData和使用ViewData方法是一樣的,但是它可用於在不同的Action之間傳值,這是ViewData做不到的。

   控制器代碼:

public class MVCController : Controller  
{     
    public ActionResult Index1()  
    {  
        TempData["name"] = "梁順盛";              
        return View();  
    }  
  
    public ActionResult Index2()  
    {  
        string strName = TempData["name"].ToString()  
        return View();  
    }  

上面的代碼中,Index()給TempData添加了一個鍵值對,假設我們先請求Index這個Action,接着請求Index2這個Action,那么在Index2中,我們便可以得到之前添加到TempData的鍵值對。有趣的是,這時如果再次請求Index2,那么從TempData中讀到的MyName的值會是null。這是因為TempData和一個臨時的Session差不多,當Acion執行的時候它做為一個全局對象保存的內存中,而一旦Action的執行完成,就會釋放內存空間,這就是它與ViewData最大的不同之處。

4)Model

     Controller通過Model傳值應該是MVC中使用最為普遍的一種傳值方式,通過強類型綁定,在View中可以很方便的通過Model的相應屬性得到想要的值。

     Model代碼:

public partial class YzAdministratorEntity  
{  
    public YzAdministratorEntity()  
    {  
        this.YzClearRecordEntity = new HashSet<YzClearRecordEntity>();  
        this.YzNotifyInfoEntity = new HashSet<YzNotifyInfoEntity>();  
    }  
  
      
    public System.Guid ID { get; set; }  
    public string AdminPassword { get; set; }  
    public string AdminName { get; set; }  
    public bool isUsed { get; set; }  
  
    [Required(AllowEmptyStrings = false, ErrorMessage = "用戶ID不能為空")]  
    public string AdministratorID { get; set; }  
    public string AdminLevel { get; set; }  
  
    public virtual ICollection<YzClearRecordEntity> YzClearRecordEntity { get; set; }  
    public virtual ICollection<YzNotifyInfoEntity> YzNotifyInfoEntity { get; set; }  
}  

視圖代碼:

強類型綁定:

@model Model.YzAdministratorEntity

通過Linq自動匹配Model和Label或TxtBox的屬性值:

<div>  
    <span class="editor-label">  
        @Html.Label("編號:")  
    </span>  
    <span class="editor-field">  
        @Html.EditorFor(a => a.AdministratorID)  
        @Html.ValidationMessageFor(model => model.AdministratorID)  
    </span>  
</div>  
  
<div>  
    <span class="editor-label">  
        @Html.Label("密碼:")  
    </span>  
    <span class="editor-field">  
        @Html.EditorFor(a => a.AdminPassword )  
    </span>  
</div>  
  
<div>  
    <span class="editor-label">  
        @Html.Label("真實姓名:")  
    </span>  
    <span class="editor-field">  
        @Html.EditorFor(a => a.AdminName )  
    </span>  
</div>  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM