9

Привет, я новичок в MVC, и я ловил рыбу без везения о том, как создавать пользовательские элементы управления MVC с возвратом ViewData. Я надеялся, что кто-то опубликует пошаговое решение о том, как подойти к этой проблеме. Если бы вы могли сделать свое решение очень подробным, что бы очень помогло.MVC User Controls + ViewData

Извините за то, что я был так дискретным с моим вопросом, я просто хотел бы пояснить, что то, что Im ultimatly пытается сделать, это передать идентификатор процессу 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); 
} 

и в моем User Control я хотел бы, чтобы сделать объекты этой записи и тот мой вопрос.

ответ

8

Если я понимаю ваш вопрос, вы пытаетесь передать ViewData в пользовательский элемент управления. Контрольный пользователя, по существу, частичный вид, так что вы могли бы сделать это:

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

Теперь в вашем UserControl, ViewData будет то, что вы прошли в ...

+0

Вы имеете в виду <% Html.RenderPartial ("someUserControl", viewData); %>, если вы поместите свой файл в общую папку – 2010-05-14 17:58:08

0

Я уверен, что просмотр данных доступен внутри пользовательских элементов управления так долго, как вы расширяете System.Web.Mvc.ViewUserControl и передать его в меня есть фрагмент кода:.

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

и из моей Доступна категория ViewData.

0

Не уверен, если я понимаю вашу проблему полностью, но вот мой ответ на вопрос «Как добавить элемент управления пользователя в проект ASP.NET MVC».

В Visual Studio 2008 вы можете выбрать Добавить элемент. В категориях с левой стороны вы можете выбрать Visual C#> Web> MVC. Есть опция MVC View User Control. Выберите его, выберите имя, выберите нужную главную страницу, и вы хорошо пойдете.

1

OK здесь идет - Мы используем данные 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 Аякса вызовы.

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

Я надеюсь, что это приведет вас к хорошему началу. Удача