I have a BarEditor.ascx, that can be called from diffent places.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Models.Bar>" %>
<%= Html.TextBox("a") %>
...
Now consider I need to edit two objects on one page Edit.aspx
<form action="update">
<div>
<% Html.RenderPartial("BarEditor", ViewData["bar"]); %>
</div>
<div>
<% Html.RenderPartial("BarEditor", ViewData["baz"]); %>
</div>
<input type="submit" value="Submit" />
</form>
This submits:
a=1&a=2
I need it to be:
bar.a=1&baz.a=2
So we can process it with
public ActionResult Update(Bar bar, Bar baz)
{
...
}
What is a best way to write reusable BarEditor.ascx that can generate prefixes for controls names?
just create a ViewModel class for your BarEditor and make it strongly typed to this new class
e.g.
now you create your textbox in BarEditor.ascx like this
and in your view you include the BarEditor like that
hth