MVC用户控件+视图数据

9

你好,我是新手,对MVC不太熟悉,我已经尝试了很多方法,但都没有成功构建MVC用户控件并返回ViewData。希望有人能提供一份详细的步骤解决方案来解决这个问题。如果您能详细说明解决方案,那将非常有帮助。

很抱歉我的问题描述不够清晰,我想澄清一下,我最终想做的是将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);
}

在我的用户控件中,我想渲染该记录的对象,这是我的问题。
4个回答

8

如果我理解你的问题,你想将ViewData传递到用户控件中。用户控件本质上是一个部分视图,所以你可以这样做:

<% Html.RenderPartial("someUserControl.ascx", viewData); %>

现在在您的用户控件中,ViewData 将是您传递进来的任何内容...

如果您将文件放在共享文件夹中,那么您的意思是 <% Html.RenderPartial("someUserControl", viewData); %>。 - Junior Mayhé

1

好的,这里是内容 --我们使用 Json 数据

在 aspx 页面中,我们有一个 ajax 调用,调用了控制器。查找 ajax 调用的可用选项参数。

url:这将调用类中的函数。(显然)我们的类名为 JobController,函数名为 updateJob,不需要任何参数。url 从类名中删除了控制器部分。例如,要调用 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.)
    );
  }
}

希望这能让你有一个良好的开端。 祝你好运!


0

我不确定我完全理解你的问题,但这是我的答案:“如何将用户控件添加到ASP.NET MVC项目中”。

在Visual Studio 2008中,您可以选择“添加项目”。在左侧的类别中,您可以选择Visual C#>Web>MVC。有一个选项MVC视图用户控件。选择它,选择一个名称,选择所需的主页面,然后就可以开始了。


0

我相信只要您扩展了System.Web.Mvc.ViewUserControl并将其传递进去,视图数据就可以在用户控件内访问。 这是我的一小段代码:

<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>

而且在我的CategoryChooser中,ViewData是可以访问的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接