2013-07-23 27 views
2

我有一個如下定義的模型。使用html爲單選按鈕映射ASP.NET MVC模型而不使用Htmlhelpers

public class Holiday 
    { 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public DateTime Date { get; set; } 
     public HolidayType Type { get; set; } 
     public bool AllYears { get; set; } 
    } 
    public enum HolidayType 
    { 
     HOLIDAY1 = 1, 
     HOLIDAY2, 
     HOLIDAY3 
    } 

在我看來,我正在寫html代碼而不使用htmlhelpers(具體的項目原因)。 現在我的姓名,描述,日期等數據綁定到除單選按鈕外的模型字段HolidayType Type

以下是視圖代碼。我怎樣才能得到在我的輸入頁面中自動填充的Type值。

@model Models.Holiday 

@{ 
    ViewBag.Title = "Create"; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Create Holiday</title> 
    <script src="~/Content/Renderer/KendoUI/kendo.web.min.js"></script> 
    <script> 
     $(function() { 

      $("#holiday").kendoDatePicker(); 
     }); 
    </script> 
</head> 
<body> 
    <form id="createholiday" action="/holiday/holiday/create" method="post"> 
     <label for="Name">Holiday Name</label> 
     <input type="text" id="name" name="Name" /><br /> 
     <label for="Description">Holiday Description</label> 
     <input type="text" id="description" name="Description" /><br /> 
     <label for="Date" id="date">Date</label><br /> 
     <input id="holiday" name="Date"/><br /> 
     <label for="type">Type</label> 
     <input type="radio" name="Type" value="Holiday 1">Holiday 1<br> 
     <input type="radio" name="Type" value="Holiday 2">Holiday 2<br> 
     <input type="radio" name="Type" value="Holiday 3">Holiday 3<br> 
     <input type="submit" name="submit" value="Create" /> 
    </form> 
</body> 
</html> 
+0

如果你的「具體項目的原因」是因爲你從一個網頁設計師的HTML那麼這不是一個好的理由。將代碼更改爲使用助手。你這樣放棄了太多的功能。否則,爲什麼要使用MVC?只是使用網頁 –

回答

2

如果您的視圖引擎是剃鬚刀,請像下面那樣更改RdoBtns的值。我不知道,希望工程......

<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY1">Holiday 1<br> 
<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY2">Holiday 2<br> 
<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY3">Holiday 3<br> 
+1

是的最後我用這個連接模型和它的作品。 – ckv

0

您可以通過使用C#和doc.ready如jQuery代碼混合如果你想要這個東西做到這一點,

<script> 
    $(function() { 
     $("#holiday").kendoDatePicker(); 

     <% if(Model.Type==HolidayType.HOLIDAY1) {%> 
     $('input[value=Holiday 1]').attr('checked','checked'); 
     <%}else if (Model.Type==HolidayType.HOLIDAY2) {%> 
     $('input[value=Holiday 2]').attr('checked','checked'); 
     //...... 

    }); 
</script> 

而且,對於文本框,

$('#name').val('<%:Model.Name%>'); 
$('#description').val('<%:Model.Description%>'); 
0

在您的視圖中,然後遍歷Type字符串值列表,如下所示:

@{foreach(var holiday in new List<string>(){"Holiday 1", "Holiday 2", "Holiday 3"}) 
    { 
     <input type="radio" name="Type" value="@holiday" @(Model.Type == holiday ? "checked='checked'" : "")>@holiday <br>  
    } 
} 

這是普遍較好通過模型的列表中傳遞,與您可以訪問這樣一個新的屬性:但正如其他人指出,在foresaking HtmlHelpers你扔了一個真正

@{foreach(var holiday in Model.HolidayLists) // ...etc 

框架的好塊。

1
<input type="radio" name="Gender" value="Male">Male 
<input type="radio" name="Gender" value="Female">Female 

在控制器獲得性別值

public ActionResult YourAction(string Gender) 
{ 
    //Your Action Code Here 
} 
相關問題