嗨,我刚接触MVC,我已经四处乱窜,如何构建将ViewData返回给他们的MVC用户控件。我希望有人会就如何解决这个问题提出一步一步的解决方案。如果你能使你的解决方案非常详细,那将会有很大的帮助。
很抱歉我的问题如此离散,我想澄清一下,我最终尝试做的是将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);
}
在我的用户控件中,我想渲染该记录的对象,这就是我的问题。
答案 0 :(得分:8)
如果我理解您的问题,那么您正在尝试将ViewData传递给用户控件。用户控件本质上是一个局部视图,因此您可以这样做:
<% Html.RenderPartial("someUserControl.ascx", viewData); %>
现在,在您的usercontrol中,ViewData将是您传入的任何内容......
答案 1 :(得分:1)
好的,它去了 - 我们使用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.)
);
}
}
我希望这能让你有个好的开始。 祝你好运
答案 2 :(得分:0)
我非常确定只要您扩展System.Web.Mvc.ViewUserControl并将其传入,就可以在用户控件中访问视图数据。我有一段代码:
<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>
从我的CategoryChooser ViewData中可以访问。
答案 3 :(得分:0)
不确定我是否完全理解您的问题,但这是我对“如何将用户控件添加到ASP.NET MVC项目”的回答。
在Visual Studio 2008中,您可以选择“添加项”。在左侧的类别中,您可以选择Visual C#&gt;网络&gt; MVC。有一个选项MVC View User Control。选择它,选择一个名称,选择所需的母版页,然后就可以了。