2017-06-14 80 views
2

我確實有一個MVC ASP.NET表單需要來自用戶的數據,具體來說,用戶有9個[required]文本框來填充應有信息和大部分時間其中八個文本框的信息是相同的,所以我讓用戶填寫表單的所有字段,然後按重複按鈕,允許用戶只指定一個文本框的數據,其他八個文本框將被填充與之前指定的數據... ...但不允許用戶更改此重複的信息,所以我使用jQuery發送一個jQuery禁用的輸入值到MVC控制器

$("#idDireccion").attr("disabled", "disabled"); 
      $("#idEvento").attr("disabled", "disabled"); 
      $("#ddDepartamentos").attr("disabled", "disabled"); 
      $("#ddMunicipios").attr("disabled", "disabled"); 
      $("#idLugar").attr("disabled", "disabled"); 
      $("#datepicker").attr("disabled", "disabled"); 
      $("#idHoras").attr("disabled", "disabled"); 
      $("#idPrecio").attr("disabled", "disabled"); 

,並通過ViewBag

指定重複的值
@Html.EditorFor(model => model.lugarEvento, new { htmlAttributes = new { @class = "form-control left-border-none", @title = "especifique lugar en que impartirá el evento", @id = "idLugar", @Value = ViewBag.lugarEvento } }) 

我爲八個文本框執行此操作,它顯示信息並且不讓用戶更改該信息,但是當用戶將表單提交給處理數據庫操作的控制器時不會收到任何內容重複的信息(這是ViewModel的一部分)所有的值都是空的。

我的問題是我不得不做的,爲了不讓用戶修改重複的信息,仍然收到我的控制器中的重複信息。

回答

0

請不要使用disabled屬性,而應使用readonly屬性。這會將值發送給控制器。

 $("#idDireccion").attr('readonly', true); 
     $("#idEvento").attr('readonly', true); 
     $("#ddDepartamentos").attr('readonly', true); 
     $("#ddMunicipios").attr('readonly', true); 
     $("#idLugar").attr('readonly', true); 
     $("#datepicker").attr('readonly', true); 
     $("#idHoras").attr('readonly', true); 
     $("#idPrecio").attr('readonly', true); 
+0

確切地說,謝謝...只是一個問題,如何指定只讀到@ Html.DropDownListFor? –

+0

@PabloTobar這是有點棘手,因爲下拉菜單沒有隻讀屬性。一種方法是使用隱藏字段來存儲其值,並在禁用下拉列表時將其傳遞給控制器​​。 – Apollo

+0

我沒有使用這些,第一個用於下拉菜單,第二個用於jQuery datepicker,希望能幫助某人$('#ddDepartamentos option:not(:selected)')。prop('disabled',true); (「#datepicker」)。datepicker({minDate:-1,maxDate:-2})。attr('readonly','readonly'); –

相關問題