Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
782 views
in Technique[技术] by (71.8m points)

asp.net mvc - How to send model object in Html.RenderAction (MVC3)

I'm using MVC3 razor, and I'm trying to pass an object to a partial view, and it's not working.

This works fine without sending the object model to the partial view:

Html.RenderAction("Index", "ViewName");

Trying this doesn't sent the model object, i'm getting nulls instead (the object has data, and the view expects it):'

Html.RenderAction("Index", "ViewName", objectModel);

Is this even possible using RenderAction?

Thanks!

Edit: I found the error, there was an error with the controller's action that didn't pick up the sent object. Thanks for all your help!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...