Хорошо, это должен был быть вопрос, чтобы попросить помочь заставить мою форму работать должным образом.В процессе создания примера для публикации я выяснил, что это за исправление.
Так что теперь возникает вопрос о том, почему это работает в одну сторону, а не в другую.Я действительно не могу понять поведение.Нашел ли я ошибку в MVC?Или есть что-то, чего я не понимаю в html-запросах, что делает это поведение правильным?
В этом примере задается установка выбранного значения в раскрывающемся списке через свойство enum в модели представления, связанной с строкой запроса (этоВероятно, яснее, о чем я говорю, если вы просто прочитаете код):
Контроллер / Модель
public class HomeController : Controller
{
public ActionResult Index(TestModel model)
{
return View(model);
}
}
public class TestModel
{
public SelectList EnumOptions { get; set; }
public TestEnum EnumValue { get; set; }
public TestModel()
{
var options = from Enum e in Enum.GetValues(typeof(TestEnum))
select new { Value = e, Name = e.ToString() };
EnumOptions = new SelectList(options, "Value", "Name", TestEnum.NotSet);
}
}
public enum TestEnum
{
NotSet = 0,
Dog = 1,
Cat = 2
}
Вид
@Html.DropDownListFor(m => m.EnumValue, Model.EnumOptions)
<a href="?EnumValue=Dog">Dog numeric</a>
<a href="?EnumValue=1">Dog string</a>
Все довольно просто.
Вопрос в том, почему вторая ссылка "Собака" не работает должным образом?Обратите внимание, что он отправляет enumValue как числовое свойство, а не как свойство «string».
Но у подшивки модели с этим проблем нет. Модель, поставляемая в View, в обоих случаях одинакова .Так как же правильно выбрать выбранное значение в одном случае, а не в другом?