3

以下に定義するモデルがあります。

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
    }

私の見解では、htmlhelpers (特定のプロジェクトの理由) を使用せずに html コードを書いています。名前、説明、日付などのデータは、ラジオボタンを除いてモデルフィールドにバインドされます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>
4

4 に答える 4

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>
于 2013-07-23T09:57:52.847 に答える
0

これは、C# と jQuery コードを組み合わせて使用​​することで実現できますdoc.ready

<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%>');
于 2013-07-23T07:25:40.710 に答える
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>      
    }
}

一般に、次のようにアクセスできる新しいプロパティを使用して、モデルを介してリストを渡す方が適切です。

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

しかし、他の人が指摘しているように、HtmlHelpers を予見することで、フレームワークの本当に良いチャンクを捨てています。

于 2013-07-23T09:37:25.493 に答える