سؤال

ومرحبا ايم جديدة لMVC ولقد الصيد حولها مع أي حظ حول كيفية بناء MVC عناصر تحكم المستخدم التي لديها ViewData عاد لهم. كنت اتمنى شخص ما من شأنه نشر خطوة حل خطوة على كيفية التعامل مع هذه المشكلة. إذا كنت يمكن أن تجعل الحل مفصلة للغاية من شأنها أن تساعد بها إلى حد كبير.

وعذرا لكونها منفصلة حتى مع سؤالي، أود فقط أن أوضح أن ما ايم تحاول ultimatly فعله هو تمرير 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);
}

ووفي بلدي تحكم العضو أود أن تجعل الأشياء من هذا السجل و thats قضية بلدي.

هل كانت مفيدة؟

المحلول

إذا فهمت سؤالك، تحاول تمرير ViewData إلى عنصر تحكم المستخدم. عنصر تحكم المستخدم هي في جوهرها نظرة جزئية، لذلك يمكنك أن تفعل ذلك:

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

والآن في UserControl الخاص بك، سيكون ViewData كل ما صدر في ...

نصائح أخرى

وOK هنا غني - نحن نستخدم البيانات JSON

في صفحة aspx لدينا مكالمة اياكس الذي يستدعي وحدة تحكم. بحث عن المعلمات خيار متاح للمكالمات اياكس.

وURL: وهذا يستدعي وظيفة في فئة (الواضح) اسم فئة لدينا هو JobController، اسم الدالة هو updateJob ويستغرق أية معلمات. عنوان الموقع يسقط controllerPortion من اسم_الفئة. على سبيل المثال لاستدعاء الدالة updateJob عنوان الموقع سيكون '/ الوظيفة / 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.)
    );
  }
}

وآمل أن يكون هذا يحصل لك أن تبدأ بداية جيدة. حظا سعيدا

وأنا متأكد من عرض البيانات يمكن الوصول إليها داخل المستخدم يتحكم طالما كنت تمديد System.Web.Mvc.ViewUserControl وتمريرها في لدي قصاصة من التعليمات البرمجية:.

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

وومن داخل بلدي CategoryChooser ViewData يمكن الوصول إليها.

ولست متأكدا إذا فهمت مشكلتك تماما، ولكن هنا جوابي على "كيفية إضافة تحكم العضو لديك مشروع ASP.NET MVC".

وفي Visual Studio 2008، يمكنك اختيار إضافة عنصر. في الفئات في الجانب الأيسر، يمكنك اختيار مرئي C # <ويب> MVC. هناك خيار MVC مشاهدة تحكم العضو. تحديده، واختيار الاسم، حدد الصفحة الرئيسية المرجوة، وكنت على ما يرام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top