Модель
namespace Models
{
public class PartialTestModel
{
public int? NullableProp { get; set; }
}
}
Это отлично работает
<div class="highlight1">
@Html.DropDownListFor(m => m.NullableProp, new SelectList(Enumerable.Range(1, 10), Model.NullableProp), "-- Select one --")
</div>
Однако, если для этого свойства создан частичный вид
@model System.Int32?
<div class="highlight1">
Model's value is
@if (@Model.HasValue)
{
@Model.ToString()
}
else
{
<text>Null</text>
}
@Html.DropDownListFor(m => m, new SelectList(Enumerable.Range(1, 10), Model), "-- Select one --")
</div>
выдает ошибку
Value cannot be null or empty.
Parameter name: name
[ArgumentException: Value cannot be null or empty.
Parameter name: name]
System.Web.Mvc.Html.SelectExtensions.SelectInternal(HtmlHelper htmlHelper, String optionLabel, String name, IEnumerable`1 selectList, Boolean allowMultiple, IDictionary`2 htmlAttributes) +396232
System.Web.Mvc.Html.SelectExtensions.DropDownListFor(HtmlHelper`1 htmlHelper, Expression`1 expression, IEnumerable`1 selectList, String optionLabel, IDictionary`2 htmlAttributes) +35
System.Web.Mvc.Html.SelectExtensions.DropDownListFor(HtmlHelper`1 htmlHelper, Expression`1 expression, IEnumerable`1 selectList, String optionLabel) +14
Представление отображает частичное как
@Html.Partial("_PartialTest", Model.NullableProp, new ViewDataDictionary())
new ViewDataDictionary()
добавлено в соответствии с ответом в asp.net mvc renderpartial с нулевой моделью получает неправильный тип . Без этой неправильной модели виден в частичном представлении, когда значение свойства равно нулю. Когда значения свойства не равны NULL, его можно использовать
@Html.Partial("_PartialTest", Model.NullableProp)
, но все равно приводит к той же ошибке, что и вставленная выше.