編輯:刪除多餘的代碼,可能導致問題。奇怪的查詢字符串'幾乎'元素的重複
所使用的模型如下:
public class StockProcessSearchModel : BaseSearchModel
{
public bool IsOutOfStock { get; set; }
}
public class BaseSearchModel
{
public bool IsExpected { get; set; }
public bool IsInStock { get; set; }
}
這裏是唯一定義的路線:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Home",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Authorisations", action = "Index", id = UrlParameter.Optional });
}
視圖中的輸入是沒有什麼特別的/只是愚蠢的HTML。
<input type="submit" value="Arrivals" name="DisplayArrivals" />
現在我已經設置了現場,這個問題有點奇怪......這是給下面的查詢字符串,當我點擊DisplayArrivals輸入,即它複製了參數的描述,但沒有價值,即真然後假:
(我要補充的是,參數應該是:IsExpected =真& IsInStock =真& IsOutOfStock =假)
運行Fiddler4它告訴我,請求的URL(即一旦輸入點擊)是:
,並在DisplayArrivals代碼中的斷點證明「複製'在我自己的代碼執行任何操作之前發生?!?!這導致我相信它必須是路由/映射/模型綁定問題。
我想知道它爲什麼重複這些querystring元素,更重要的是如何防止它。
編輯:由於這裏要求是怎麼產生的IsInStock和IsExpected和IsOutOfStock輸入:
@if (!Model.IsInStock && !Model.IsExpected && !Model.IsOutOfStock)
{
@Html.CheckBox("IsExpected", true)
@Html.CheckBox("IsInStock", true)
}
else
{
@Html.CheckBoxFor(m => m.IsExpected)
@Html.CheckBoxFor(m => m.IsInStock)
}
@Html.CheckBoxFor(m => m.IsOutOfStock)
隨着你所包含的所有不相關的部分,你不包括的一個重要部分是你如何生成'IsInStock'輸入。 – StriplingWarrior