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 に答える