簡體   English   中英

剃刀顯示屬性名稱而不是值

[英]Razor showing property name instead of value

我只是啟動MVC和razor,我遇到顯示數據的問題,當我試圖在UI上顯示它顯示屬性名稱而不是數據時,控制器返回視圖中的集合數據列表。 對於exmaple @ Html.LabelFor(M => M [i] .Questions),假設顯示問題數據,但它在UI中顯示屬性名稱,我會非常感謝有人幫助我。

在此輸入圖像描述

 @model List<Question.Models.Questionnaire>
   @using System.Linq
     @{
     ViewBag.Title = "Index";
      Layout = "~/Views/Shared/_Layout.cshtml";
     }

 <h2>Question List</h2>

 @using(Html.BeginForm("GetAnswer","Home")) {


for(int i = 0;i < Model.Count;i++) {

    //<text>@Model[i].Questions</text> <br />

      @Html.HiddenFor(M => M[i].QuestionID)
      **@Html.LabelFor(M =>M[i].Questions)**

    if (@Model[i].MultipleChoice == false){

        @Html.TextBoxFor(M => M[i].Response) <br />

    } else {

        for(int j = 0;j < Model[i].GetAns.Count;j++) {
        <div>
        <text>@Model[i].GetAns[j].AnsText</text>
        @Html.RadioButtonFor(M =>M[i].Questions, Model[i].GetAns[j].AnswerId)
        </div>
        }
        <br />
    }
}


     public class Questionnaire
     {
        public Questionnaire() {
      }

    public int QuestionID  { get; set;}
    public string Title    { get; set;}
    public string Questions{ get; set;}
    public string Response { get; set;}
    public string Response1 {
        get;
        set;
    }
    public bool MultipleChoice { get; set;}

    public List<Answer>GetAns { set; get;}

}


 public class QuestionRepository
 {

    public List<Questionnaire>
         GetQuestionnaire() {
             List<Questionnaire> q = new List<Questionnaire>();
             q.Add(new Questionnaire() {
                 QuestionID = 11, Title = "Geo", Questions = "Capital of England?", GetAns = GetAns(), MultipleChoice = false, Response1="TEST"
             });
             q.Add(new Questionnaire() {
                 QuestionID = 22, Title = "Geo", Questions = "Capital of France", GetAns = GetAns(), MultipleChoice = false, Response1 = "TEST2"
             });
             q.Add(new Questionnaire() {
                 QuestionID = 33, Title = "Geo", Questions = "Capital of Cuba", GetAns = GetAns(), MultipleChoice = true, Response1 = "TEST3"
             });
             return q;
    }

    public List<Answer> GetAns() {

        List<Answer> ans = new List<Answer>();
        ans.Add(new Answer() { AnswerId = 1, AnsText = "london", Ques = new Questionnaire() { QuestionID = 11 } });
        ans.Add(new Answer() { AnswerId = 2, AnsText = "paris", Ques = new Questionnaire() {  QuestionID = 22 } });
        ans.Add(new Answer() { AnswerId = 3, AnsText = "Havana", Ques = new Questionnaire() { QuestionID = 33 }  });

        return ans;
    }



}


   public ActionResult Index()
    {

        var q = new QuestionRepository().GetQuestionnaire();

        return View(q);
    }

@Html.LabelFor()用於顯示屬性的名稱(或[Display(Name="...")]定義的值),而不是屬性的值。 如果要顯示該值,請使用

@Html.DisplayFor(m =>m[i].Questions)

這就是Html.LabelFor()作用。 它的意思是在輸入元素旁邊創建一個標簽,其中標簽具有字段名稱,輸入元素具有值。

如果您想要輸入元素中的值,請使用類似Html.TextBoxFor() 或者您可以使用Html.DisplayFor()來創建某種顯示元素。 或者,如果您只想要將值發送到標記,只需直接發出:

@model.SomeProperty

您不需要使用HTML幫助程序方法直接發出值,只需將標記的那部分直接綁定到模型即可。

暫無
暫無

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

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