奇怪的模型粘合劑行爲:
- 當我使用RedirectToAction與包含分數的參數(因爲在俄羅斯,我們使用「,」而不是「。」,前1 ,5; 2,5)在查看它綁定與點,「4,5 => 4.5」,並且在發佈表單後,我有ModelState錯誤和值等於0.但輸入整數時,所有按預期工作。
我可以修復它嗎?
型號:奇怪的模型綁定器行爲與分數
public class TestA
{
public double FirstNumberA { get; set; }
public double SecondNumberA { get; set; }
}
public class TestB
{
public double FirstNumberB { get; set; }
public double SecondNumberB { get; set; }
}
控制器:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(TestA model)
{
return RedirectToAction("About", new { firstNumberB = model.FirstNumberA, secondNumberB = model.SecondNumberA });
}
public ActionResult About(double firstNumberB, double secondNumberB)
{
return View(new TestB() { FirstNumberB = firstNumberB, SecondNumberB = secondNumberB });
}
[HttpPost]
public ActionResult About(TestB model)
{
return View();
}
觀點: /*指數*/
@model TestA
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.FirstNumberA)
@Html.TextBoxFor(x => x.SecondNumberA)
<input type="submit" name="submit" value="submit" />
}
/*約*/
@model TestB
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.FirstNumberB)
@Html.TextBoxFor(x => x.SecondNumberB)
<input type="submit" name="submit" value="submit" />
}
Upd 當在About.cshtml和後表單中刪除TextBoxFor(x => x.SecondNumberB)時 - 當SecondNumberB綁定時,FirstNumberB將導致ModelState錯誤。
UPD2 我認爲,這裏是另一個問題,那說明菲爾哈克在他post - asp.mvc首先查找值的查詢字符串,並得到它。在我的情況下,在查詢字符串中,我有?firstNumber = 1.5,它與TextBox「原樣」綁定,沒有文化規則。發佈後,我們得到FormatException錯誤。我該如何解決它 - 將十進制值與正確的文化十進制分隔符綁定到文本框?我無法使用任何JavaScript。我想在ReturnToRedirect之前使用TempData解決方法,但在這種情況下,用戶無法重新加載頁面。
http://stackoverflow.com/questions/6613621/mvc-3-decimal-server-side-validation-problem/ – Eranga