2013-07-22 37 views
0

我不確定爲什麼我會得到這種行爲,如果有人能指引我正確的來源,我不知道爲什麼我需要谷歌。MVC 4,模型和模型呈現不同

視圖模型

public class GeneralDay 
{ 
    public byte tintWeekDay { get; set; } 
    public string nvarDayName { get; set; } 
    public bool Assigned { get; set; } 
} 

控制器

[ChildActionOnly] 
    public PartialViewResult TargetDay(MODELS.ViewModels.Promotion promotion) { 

     var daylist = gd.GeneralDayList(); 
     foreach (var day in daylist) 
     { 
      promotion.targetDay.Add(new MODELS.ViewModels.GeneralDay 
      { 
       Assigned = promotion.targetDay.FirstOrDefault(x => x.tintWeekDay == day.tintWeekDay) != null, 
       nvarDayName = day.nvarDayName, 
       tintWeekDay = day.tintWeekDay 
      }); 
     } 

     ModelState.Clear(); 
     return PartialView(promotion); 
    } 

查看

@model GeneralDay 
@using XXX.ViewModels; 

<fieldset> 


//First Part 
@(Model.tintWeekDay) 
@(Model.nvarDayName) 
@(Model.Assigned) 

//Second Part 
@Html.LabelFor(model => model.tintWeekDay)  
@Html.LabelFor(model => model.nvarDayName)  
@Html.LabelFor(model => model.Assigned) 

</fieldset> 

上面顯示這些結果,爲什麼不同的結果?

第一部分

1日假

第二部分

tintWeekDay

nvarDayName

分配

回答

0

因爲在第一部分中,您渲染模型屬性的值。

@(Model.tintWeekDay)呈現1到輸出。

但@ Html.LabelFor(型號=> model.tintWeekDay)使該字段的(不存在的)標籤,而不是價值)

使用DisplayAttribute改變字段標籤在模型中。

例子:

public class GeneralDay 
{ 
    [Display(Description = "Day of week")] 
    public byte tintWeekDay { get; set; } 
    public string nvarDayName { get; set; } 
    public bool Assigned { get; set; } 
} 
+0

對不起,我在MVC新。有點混亂。如果我喜歡在第二種方法上顯示價值基礎,我該如何實現?並且我想顯示用於檢查的複選框列表。 – tsohtan

+0

好的,找到了顯示方式,我應該這樣做,比這更好的方式? @ Html.HiddenFor(model => model.tintWeekDay) @(Model.nvarDayName) @ Html.CheckBoxFor(model => model.Assigned) – tsohtan

+0

@HtmlHiddenFor在這個函數中創建一個元素呈現HTML。你的問題並不清楚你所執行的是什麼。 –

1

那麼下面的打印值..

//First Part 
@(Model.tintWeekDay) 
@(Model.nvarDayName) 
@(Model.Assigned) 

和下面是創建標籤

//Second Part 
@Html.LabelFor(model => model.tintWeekDay)  
@Html.LabelFor(model => model.nvarDayName)  
@Html.LabelFor(model => model.Assigned) 

既然你不使用DisplayAttribute,該LabelFor只是打印變量名。

也許你想使用:

//Second Part 
@Html.DisplayFor(model => model.tintWeekDay)  
@Html.DisplayFor(model => model.nvarDayName)  
@Html.DisplayFor(model => model.Assigned)