MVC用户控件+ ViewData
嗨,我是MVC的新手,但我对如何构建将ViewData返回给他们的MVC用户控件一无所知。我希望有人能发布有关如何解决此问题的分步解决方案。如果我们可以使解决方案非常详细,那将对我们大有帮助。
抱歉,我的问题如此离散,我只想澄清一下,Im最终试图做的是将id传递给控制器actionresult方法,并希望直接从控制器本身将其呈现给用户控件。我不确定如何开始使用这种方法,并不确定这是否可能。在我看来,它基本上是这样的
public ActionResult RTest(int id){ RTestDataContext db = new RTestDataContext(); var table = db.GetTable<tRTest>(); var record = table.SingleOrDefault(m=> m.id = id); return View("RTest", record); }
在我的用户控件中,我想呈现该记录的对象,这就是我的问题。
解决方案
我很确定只要我们扩展System.Web.Mvc.ViewUserControl并将其传入,就可以在用户控件内访问视图数据。我有一段代码:
<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>
并且可以从我的CategoryChooser内部访问ViewData。
如果我理解问题,则我们正在尝试将ViewData传递到用户控件中。用户控件本质上是局部视图,因此我们可以执行以下操作:
<% Html.RenderPartial("someUserControl.ascx", viewData); %>
现在在用户控件中,ViewData将成为我们传入的任何内容...
不知道我是否能完全理解问题,但是这是我对"如何向ASP.NET MVC项目添加用户控件"的回答。
在Visual Studio 2008中,可以选择"添加项目"。在左侧的类别中,可以选择" Visual C">" Web">" MVC"。有一个选项" MVC查看用户控件"。选择它,选择一个名称,选择所需的母版页,我们就可以开始了。
好了,它走了-
我们使用Json数据
在aspx页面中,我们有一个调用控制器的ajax调用。查找用于ajax调用的可用选项参数。
url:这将调用类中的函数。(显然)我们的类名是JobController,函数名是updateJob,它不带任何参数。该URL从类名中删除controllerPortion。例如,要调用updateJob函数,URL将为" / Job / UpdateJob /"。
var data = {x:1, y:2}; $.ajax({ data: data, cache: false, url: '/ClassName/functionName/parameter', dataType: "json", type: "post", success: function(result) { //do something }, error: function(errorData) { alert(errorData.responseText); } } );
在JobController类中:
public ActionResult UpdateJob(string id) { string x_Value_from_ajax = Request.Form["x"]; string y_Value_from_ajax = Request.Form["y"]; return Json(dataContextClass.UpdateJob(x_Value_from_ajax, y_Value_from_ajax)); }
我们有一个Global.asax.cs页面,用于映射ajax调用。
public class GlobalApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "EnterTime", action = "Index", id = "" } // Parameter defaults (EnterTime is our default controller class, index is our default function and it takes no parameters.) ); } }
我希望这能使我们有个良好的开端。
祝你好运