9

嗨,我是 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);
}

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

4

4 回答 4

8

如果我理解您的问题,您正在尝试将 ViewData 传递给用户控件。用户控件本质上是一个局部视图,所以你可以这样做:

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

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

于 2008-10-01T14:04:14.510 回答
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));
}

我们有一个映射 ajax 调用的 Global.asax.cs 页面。

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.)
    );
  }
}

我希望这能让你有个好的开始。祝你好运

于 2008-10-01T14:11:57.753 回答
0

我很确定只要您扩展 System.Web.Mvc.ViewUserControl 并将其传入,就可以在用户控件中访问视图数据。我有一段代码:

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

并且可以从我的 CategoryChooser ViewData 中访问。

于 2008-10-01T14:03:51.267 回答
0

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

在 Visual Studio 2008 中,您可以选择添加项目。在左侧的类别中,您可以选择 Visual C# > Web > MVC。有一个选项 MVC View User Control。选择它,选择一个名称,选择所需的母版页,您就可以开始了。

于 2008-10-01T14:06:06.427 回答