Отредактировано: Удалить лишний код, который может помешать проблеме.Странная кнопка «почти» дублирование элементов
Модель, которая используется следующим образом:
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 доказывает, что «дублирования 'происходит до того, как мой собственный код что-нибудь сделает?!?! Это заставляет меня думать, что это должна быть проблема привязки маршрутизации/сопоставления/модели.
Я хотел бы знать, почему это дублирует эти элементы запроса и, что более важно, как предотвратить его.
EDIT: В соответствии с просьбой вот как я произвожу входы для 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