0

我想提供一個單選按鈕列表以從MVC 3模型中的一小組字符串中選擇一個選項。我正在研究的是調查中問題的編輯模板。自定義EditorTemplate的模型綁定

到目前爲止,我遵循Brad Christie's advice,這使我能夠正確地呈現視圖。下面是相關的代碼:

型號 - Question.cs

(注意,這實際上是一種模型的第一EF實體,但我不認爲它很重要)

public class Question { 
    // snip unimportant properties 
    public string QuestionType { get; set; } 
} 

視圖 - Question.cshtml

// snip unimportant view code 

<div class="control-group"> 
    @Html.LabelFor(model => model.QuestionType, "Question Type") 
    <div class="controls"> 
     @Html.EditorFor(model => model.QuestionType, "QuestionType") 
     @Html.ValidationMessageFor(model => model.QuestionType) 
    </div> 
</div> 

視圖 - QuestionType.cshtml

@model System.String 

@{ 
    var questionTypes = new String[] { "PickOne", "PickMany", "OpenEnded" }; 
    var typesMap = new Dictionary<String, String> { 
     { "PickOne", "Pick a single answer" }, 
     { "PickMany", "Pick several answers" }, 
     { "OpenEnded", "Open-ended answer" } 
    }; 
} 

@foreach (var questionType in questionTypes) { 
    <label class="radio"> 
     @Html.RadioButtonFor(model => model, questionType) 
     @typesMap[questionType] 
    </label> 
} 

雖然視圖創建正確的HTML,當我加載了一個調查的編輯器視圖,對應其問題類型的單選按鈕沒有在頁面加載預選。我假設這與模型綁定有關?

如何根據數據庫中存在的選擇預先選擇正確的單選按鈕?如果它很重要,我使用模型優先實體框架4作爲我的持久層。

+0

退房http://stackoverflow.com/questions/8357468/radiobuttonfor-not-selecting-value-in-editor-templates,我相信這是同一個問題你有。 – DMulligan

+0

從這個答案看來,這種技術對編輯器模板不合適。由於我正在編輯一個編輯器模板,所以它似乎不適合我。有沒有人有任何想法是否正確? –

+0

我認爲這個問題意味着你可以使用你想要的編輯器模板,你不能在編輯器模板中使用RadioButtonFor。 – DMulligan

回答

1

基於RadioButtonFor not selecting value in editor templates

你的模型綁定是好的,問題僅僅是

@Html.RadioButtonFor(model => model, questionType) 

對應一個空的名字,並RadioButtonFor永不檢查單選按鈕與空名。

你應該能夠做到

@Html.RadioButton("", questionType, questionType == Model) 
+0

這工作得很好。它比我發現的駭人的方式要乾淨得多。我想出了一種使用屬性字典的方法。這相當醜陋,但這更好。謝謝! –

相關問題