You can actually pass an object to a controller method using Action. This can be done on any avaialble view, for instance I have one in a shared library that gets built to project bin folders that reference my shared project (properties - Copy if newer on the view file, in Visual Studio). It is done like so:
Controller:
public class GroovyController : Controller
{
public ActionResult MyTestView(MyModel m)
{
var viewPath = @"~inCommonViewsMyTestView";
return View(viewPath, m);
}
}
MVC page (using Razor syntax):
@Html.Action("MyTestView", "Groovy", new { m = Model })
or using RenderAction
method:
@{ Html.RenderAction("MyTestAction", "MyTestController", new { area = "area", m = Model }); }
Note: in the @Html.Action()
, the Model
object must be of type MyModel
and that 3rd parameter must be set to the controller variable name, of which mine is MyModel m
. The m
is what you must assign to, so I do m = Model
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…