Спасибо за посты выше, они помогли мне создать сильную систему привязки типов для MVC 4 HTMLHelpers следующим образом.
public static MvcHtmlString StrongTypeBinder(this HtmlHelper htmlhelper, Expression<Func<object, string>> SomeLambda)
{
var body = SomeLambda.Body;
var propertyName = ((PropertyInfo)((MemberExpression)body).Member).Name;
HtmlString = @"
<input type='text' name='@Id' id='@Id'/>
";
HtmlString = HtmlString.Replace("@Id", propertyName);
var finalstring = new MvcHtmlString(HtmlString);
return finalstring;
}
Чтобы использовать код выше в любом CSHTML-представлении:
@Html.StrongTypeBinder(p=>Model.SelectedDate)
Это позволяет мне привязывать любое свойство в ViewModel к любому типу элемента HTML, который я хочу. В приведенном выше примере я связываю поле имени для выбранных данных, отправленных обратно после того, как пользователь сделает выбор. Модель представления после обратной записи автоматически показывает выбранное значение.