در این مقاله ما سعی داریم تا با ابزار اتصال به بانک اطلاعاتی و نحوه کارکرد آنها در MVC آشنا شویم. همچنین به سودمندی و مزیت این ابزار پی خواهیم برد. همانطور که میدانید هنگامی
که در مرورگرها یک درخواست به سمت کلاسی خاص از شئ ها ارسال میکنیم ، خاصیت نام کلاس مانند کنترل های HTML که اطلاعات را به صورت خودکار به خاصیت کلاسها متصل
میباشند. این اتصال به صورت خودکار میباشد که در ادامه به آن اشاره شده است …
اتصال به بانک اطلاعاتی
کلاس مشتری با Properties :
publicclassCustomer { publicstring Code { get; set; } publicstring Name { get; set; } }
در قسمت HTML کد زیر را قرار میدهیم :
formaction="Customer/Submit" method="post" table tr tdCustomerCode/td td inputid="Code" name="Code" type="text" / /td /tr tr tdCustomer Name/td td inputid="Name" name="Name" type="text" / /td /tr tr td inputid="btnSubmit" name="btnSubmit" type="submit" value="Login" / /td /tr /table /form
بنابراین هنگامی که بر روی دکمه ی login کلیک میکنیم ، محتوای فرم به صورت خودکار به کلاس مورد نظر با همان نام متصل میشود .
در این قسمت ما میتوانیم اطلاعات ارسال شده به کلاس را مشاهده کنیم .
حال اگر ماخاصیت خود را با نام متفاوت از HTML Control موجود در صفحه ایجاد کنیم چه اتفاقی رخ میدهد ؟
div formaction="Customer/Submit" method="post" table tr td>CustomerCode/td td inputid="TxtCustomerCode" name="TxtCustomerCode" type="text" / /td /tr tr td>Customer Name/td td inputid="TxtCustomerName" name="TxtCustomerName" type="text" / /td /tr tr td inputid="btnSubmit" name="btnSubmit" type="submit" value="Login" / /td /tr /table /form
کلاس مربوطه :
publicclassCustomer { publicstring Code { get; set; } publicstring Name { get; set; } }
همانطور که مشاهده میکنید ، اطلاعات را به کنترلها با نام متفاوت متصل کرده ایم.
همانطور که میدانید نمای صفحه توسط طراحان وب و کد های سی شارپ توسط برنامه نویسان نوشته میشود. بنا براین اسم های به کار رفته ممکن است متفاوت باشد و در اینصورت
اتصال خودکار ممکن است رخ ندهد ، زیرا نام Propertie Name با نام User Interface تفاوت دارد. برای اتصال به بانک از این طریق باید از IModelBinder استفاده کنیم. برای این منظور ما
کلاس خود با نام Custom Binder ایجاد میکنیم سپس IModelBinder را اجرا و پس از آن متد Interface را اجرا میکنیم.
همانطور که میدانید عملیات تحت وب بر اساس قانون Request و Response عمل میکند.
هر دو عملیت Request و Response به شئ Context متعلق میباشد.
publicclassCustomerBinder: IModelBinder { publicobjectBindModel(ControllerContextcontrollerContext, ModelBindingContextbindingContext) { HttpContextBaseobjContext = controllerContext.HttpContext; stringCustomerCode = objContext.Request.Form["TxtCustomerCode"]; //binding with UI txtCustomerCode stringCustomerName = objContext.Request.Form["TxtCustomerName"]; //binding with UI txtCustomerName CustomerobjCustomer = newCustomer() { Code = CustomerCode, //mapping to the properties Name = CustomerName //mapping to the properties }; returnobjCustomer; //returning the object } }
اکنون ما از کلاس برای اتصال به شئ Customer Object استفاده میکنیم.
publicActionResult Submit([ModelBinder(typeof(CustomerBinder))] Customerobj) //call the CustomerBinder class and fill this Customer Object { if (ModelState.IsValid) { return View("Customer", obj); } else { return View("Index", obj); } }
اکنون کلاس CustomerBinder فراخوانی میشود و از محتویات پروتکل http ما میتوانیم اطلاعات را از طریق Request.form به کلاس موردنظر متصل کنیم.
همانطور که مشاهده میکنید اتضال توسط کلاس Model Binder انجام شده است و طراح و برنامه نویس به طور جداگانه میتوانند به کار خود ادامه دهند و میتوانید مشاهده کنید که
چطور کلاس Model Binder به ما در اتصال اطلاعات کمک میکند. در مواقعی که میخواهیم نام کلاس موردنظر با نام خاصیت های کنترل در HTML یکی نباشد این کلاس میتواند مفید
باشد.
هیچ دیدگاهی نوشته نشده است.