Christopher Johnson
Christopher Johnson

Reputation: 2629

pass values from other properties on my model to custom htmlhelper

I am trying to create a custom html helper that will actually have several html elements in it including an input type of file and input type of button.

I have that working fine, but I'd also like to include a few hidden inputs and populate the values of those with values from a few of the properties of my model. Is it possible to fetch the values of a few properties from my model in a custom @Html.MyCustomHelperFor(m => m.somefield)

my method signature looks like this:

public static MvcHtmlString MyCustomHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)

also, a bit off topic, would I be better suited just writing this up in a partial view?

please advise.

Upvotes: 0

Views: 469

Answers (1)

user3559349
user3559349

Reputation:

You can access the full model from ViewData

MyCustomHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
  MyModelClass model = htmlHelper.ViewData as MyModelClass;
  string otherProperty = model.OtherProperty;

However this is not very flexible since it will only work for one model type (unless you do conditional checks (if (htmlHelper.ViewData is MyModelClass1) {..} else if (htmlHelper.ViewData is MyModelClass2) {..} etc.

I suggest you would be better of creating a partial view or custom display and editor templates.

Upvotes: 1

Related Questions