MVCユーザーコントロール+ ViewData
-
03-07-2019 - |
質問
こんにちは、MVCが初めてで、ViewDataが返されるMVCユーザーコントロールを構築する方法がうまくいかないことを思いつきました。私は誰かがこの問題に取り組む方法について段階的な解決策を投稿してくれることを望んでいました。ソリューションを非常に詳細に作成できれば、非常に役立ちます。
私の質問であまりにも離散的であるため、申し訳ありませんが、私がやろうとしていることは、コントローラーのactionresultメソッドにidを渡し、コントローラー自体から直接ユーザーコントロールにレンダリングすることです。このアプローチをどのように始めたらよいか分からず、これが可能かどうか疑問に思っています。本質的にはこのように見えます
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);
}
そしてユーザーコントロールで、そのレコードのオブジェクトをレンダリングしたいと思います。それが私の問題です。
解決
質問を理解したら、ViewDataをユーザーコントロールに渡そうとしています。ユーザーコントロールは基本的に部分的なビューなので、次のようにします。
<% Html.RenderPartial("someUserControl.ascx", viewData); %>
ユーザーコントロールでは、ViewDataは渡されたものになります...
他のヒント
ここでOK- JSONデータを使用します
aspxページには、コントローラーを呼び出すajax呼び出しがあります。 ajax呼び出しに使用可能なオプションパラメーターを調べます。
url:これはクラス内の関数を呼び出します。(明らかに)クラス名はJobController、関数名はupdateJobであり、パラメーターを取りません。 urlは、classnameから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.)
);
}
}
これで良いスタートが切れることを願っています。 頑張って
System.Web.Mvc.ViewUserControlを拡張して渡す限り、ユーザーコントロール内でビューデータにアクセスできると確信しています。コードのスニペットがあります:
<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>
そして私のCategoryChooser ViewData内からアクセス可能です。
あなたの問題を完全に理解しているかどうかはわかりませんが、「ASP.NET MVCプロジェクトにユーザーコントロールを追加する方法」に対する私の答えは次のとおりです。
Visual Studio 2008では、アイテムの追加を選択できます。左側のカテゴリで、Visual C#&gt;を選択できます。ウェブ&gt; MVC。オプションMVCビューユーザーコントロールがあります。それを選択し、名前を選択し、目的のマスターページを選択すると、準備完了です。