【发布时间】:2015-11-03 16:07:56
【问题描述】:
已编辑:删除可能影响问题的多余代码。
使用的模型如下:
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 输入时,它会给出以下查询字符串,即它复制参数描述符而不是值,即 true 然后 false:
(我应该补充一点,参数应该是:IsExpected=true&IsInStock=true&IsOutOfStock=false)
运行 Fiddler4 它告诉我请求的 URL(单击输入后立即)是:
DisplayArrivals 代码中的断点证明在我自己的代码执行任何操作之前发生了“重复”?!?!这让我相信这一定是路由/映射/模型绑定问题。
我想知道为什么它会重复这些查询字符串元素,更重要的是如何防止它。
编辑:这里要求的是我如何为 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输入。
标签: c# asp.net-mvc-4 model-view-controller asp.net-mvc-routing