2017-08-19 40 views
1

我有一個BeginForm來填充模型的所有屬性。然後我使用屬性值來傳遞操作方法(模型綁定)。將BeginForm之外的值傳遞給它

現在我在BeginForm之外有一個下拉菜單,我想向模型添加一個屬性。屬性值是從下拉列表中選定的值中拾取的。

所以

  1. 我修改了模型AddQuestionModel,增加了一個屬性SelectedLanguage
  2. 在BeginForm中添加了一個隱藏文本框。

    @using (Html.BeginForm("AddSurveyQuestion", "Country", FormMethod.Post, new { enctype = "multipart/form-data", id = "AddQuestionForm" })) 
    { 
        <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         <h3>Add New Question</h3> 
        </div> 
        <div class="modal-body"> 
        @Html.TextBox("SelectedLanguage",new { value = "English", @class = "hidden" }) 
    
  3. 聽更改事件。

    $("#Model_SelectedLanguage").change(function() { 
         var selectedValue = $(this).find('option:selected').text(); 
         $("#SelectedLanguage").val(selectedValue); 
         location.reload(); 
    }); 
    

現在的問題是,我仍然無法在操作方法

[HttpPost] 
public ActionResult AddSurveyQuestion(AddQuestionModel model)`. 

我的意思是model.SelectedLanguage = null選擇值。

此外我發現由TextBox呈現的輸入元素根本不隱藏。

+0

首先,您可以使用隱藏字段而不是'@ Html.TextBox':'@ Html.Hidden()'。我會檢查的另一件是你的選擇下拉的價值。確保文字實際上是返回一些東西。 – axlj

回答

1

爲構建隱藏字段,你可以使用

@Html.Hidden("SelectedLanguage", "english") 

@Html.HiddenFor(x => x.SelectedLanguage) 

模型競價搜索的值:

  • 表單數據
  • 路由數據
  • 查詢字符串
  • 文件
  • 自定義(餅乾爲例)

證明的SelectedLanguageAddQuestionModel的值是一個字符串,它應該工作。

如果模型聯編程序可以找到值並正確轉換或映射,它將起作用。

萬一頁面模型視圖是從操作方法不同,可以有3種選擇:

+0

視圖中的模型與操作方法中的模型不同,因此我不能使用@ Html.HiddenFor(x => x.SelectedLanguage)'。但我會嘗試'@ Html.Hidden' – Bigeyes