Asp.net mvc MVC用户控件+视图数据

Asp.net mvc MVC用户控件+视图数据,asp.net-mvc,model-view-controller,user-controls,viewdata,Asp.net Mvc,Model View Controller,User Controls,Viewdata,嗨,我是MVC的新手,我一直在摸索如何构建MVC用户控件,并没有把ViewData返回给它们。我希望有人会发布一个关于如何解决这个问题的逐步解决方案。如果你能把你的解决方案做得非常详细,那将大有帮助 很抱歉我的问题如此分散,我想澄清一下,我最后要做的是将id传递给控制器actionresult方法,并希望直接从控制器本身将其呈现给用户控件。我不确定如何从这个方法开始,不知道这是否可能。在我看来,它基本上是这样的 public ActionResult RTest(int id){ RTestDa

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

在我的用户控件中,我希望呈现该记录的对象,这是我的问题。

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

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

并且可以从我的类别中访问Chooser ViewData

如果我理解您的问题,您正在尝试将ViewData传递到用户控件中。用户控件本质上是一个局部视图,因此您可以执行以下操作:

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

现在在您的usercontrol中,ViewData将是您传入的任何内容…

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

在VisualStudio2008中,可以选择“添加项”。在左侧的类别中,可以选择Visual C>Web>MVC。有一个选项MVC视图用户控件。选择它,选择一个名称,选择所需的母版页,就可以开始了。

好,开始了- 我们使用Json数据

在aspx页面中,我们有一个调用控制器的ajax调用。查找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.)
    );
  }
}
url:这将调用类中的函数。显然,我们的类名是JobController,函数名是updateJob,它不接受任何参数。url从类名中删除ControllerPartion。例如,要调用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.)
    );
  }
}
我希望这能让你有一个好的开始。 祝你好运

你是说如果你把你的文件放在共享文件夹里