我有一個奇怪的問題將浮點值,我有一個模型definied這樣的:錯誤而textboxfor MVC
public class AddEventModel
{
[Required]
[DataType(DataType.Text)]
[Display(Name = "Nazwa wydarzenia")]
public string EventName { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Rodzaj")]
public string EventType { get; set; }
[Required]
[DataType(DataType.DateTime)]
[Display(Name = "Data")]
public System.DateTime EventDate { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Widocznosc")]
public string IsPublic { get; set; }
[DataType(DataType.Text)]
[Display(Name = "Minimalny wiek")]
public int MinimalAge { get; set; }
[Display(Name = "Cena")]
[DataType(DataType.Text)]
public decimal Payment { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Opis")]
public string Description { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Miasto")]
public string City { get; set; }
public SelectList EventTypeList { get; set; }
}
更重要的是我有一個頁面在這樣的剃刀writen(我會後剛剛它的一部分):
<div class="form-group">
@Html.LabelFor(m => m.EventName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.EventName, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.EventType, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.EventType, Model.EventTypeList, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.EventDate, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.EventDate, new { @class = "form-control", id = "datepicker" })
</div>
<script type="text/javascript">
$(function() {
$('#datepicker').datetimepicker({
minDate: moment()
});
});
</script>
</div>
<div class="form-group">
@Html.LabelFor(m => m.IsPublic, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
<table>
<tr>
<td><label>@Html.RadioButtonFor(m => m.IsPublic, "Prywatne") Prywatne</label></td>
</tr>
<tr>
<td><label>@Html.RadioButtonFor(m => m.IsPublic, "Publiczne") Publiczne</label></td>
</tr>
</table>
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.MinimalAge, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.MinimalAge, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Payment, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Payment, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Description, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextAreaFor(m => m.Description, new { @class = "form-control" })
</div>
</div>
</div>
好了,所以,當我將我的新事件在外地以上的價格/付款IM浮點數得到一個奇怪的錯誤是這樣的:
具有'EventType'鍵的ViewData項是類型'System.String',但必須是'IEnumerable'類型。
這是非常奇怪的,因爲它指向的下拉列表中沒有與支付字段連接。正如我所說的,當我將一個整數放入Payment域時 - 一切正常。
這是怎麼回事?
編輯
歐凱傢伙,我得到它是我沒有在POST方法reassing一個的SelectList。我已經解決了。但是:
我想明白了,當我在一個文本框放一個浮點數爲什麼只apearing
如何解決下一個問題:
Value 'x.x' is not valid for Cena
它與「浮點」無關。它的原因是'Model.EventTypeList'的值是'null',可能是因爲當你發佈並返回視圖時,你沒有重新分配'SelectList'(將來只需發佈重現問題所需的最小代碼)在你的模型和視圖中的其他屬性與你的問題沒有任何關係!) –
@StephenMuecke okey,你是不是正在重新選擇選擇列表。我做到了,錯誤消失了。然而,解釋一下爲什麼只有當我把十進制數字?更重要的是,我仍然不能插入一個十進制數字的錯誤驗證cuz,如下所示:''3.1'對Cena無效。'我之前有這個錯誤,並且添加了''in web.config文件解決了問題,然後 –
ilovkatie
因爲服務器上的文化不接受一個點作爲小數點分隔符(可能是逗號)。所以當你發佈'3。1',它會添加一個'ModelState'錯誤(因爲它本應該是'3,1'),最好的猜測是如果'ModelState'無效,則返回View(model);'但忘記重新分配SelectList '。當你輸入一個整數時,'ModelState'不是無效的,所以你可能保存並重定向。 –