nopcommerce笔记:视图中按钮与后台action的对应关系
来源:互联网 发布:mac磁盘工具 编辑:程序博客网 时间:2024/04/28 17:05
视图中按钮与后台程序中的action之间的对应关系分为以下几种:
1、 视图中只有一个submit按钮
这类情况,比如注册、登录等视图。
在注册视图Register.cshtml中定义:
<input type="submit"id="register-button" class="button-1register-next-step-button" value="@T("Account.Register.Button")"name="register-button" />
只有这么一个submit按钮。
在CustomerController.cs中定义了两个函数,分别为:
[NopHttpsRequirement(SslRequirement.Yes)]
public ActionResult Register()
{
}
[HttpPost]
[CaptchaValidator]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model, stringreturnUrl, bool captchaValid)
{
}
第一个函数对应着视图Register.cshtml;第二个函数对应按下submit按钮之后的处理函数。
像这类情况,一般是两个函数同名,第一个函数不带参数,其对应视图,并给model的成员赋值;第二个函数必须带有[HttpPost],然后对获取到的model中的值进行处理。
2、 视图中有多个submit按钮
我最近在程序中用到了多个submit按钮的视图,将它们定义为:
<input type="submit" name="handle-one"class="t-button" value="@T("处理一")"/>
<input type="submit" name="handle-two"class="t-button" value="@T("处理二")"/>
后台cs文件中定义了下面几个函数:
public ActionResult OrdersHandleList()
{
}
[HttpPost, ActionName("OrdersHandleList")]
[FormValueRequired("handle-one")]
public ActionResult OrdersHandleOne(OrderHandleModel model)
{
}
[HttpPost, ActionName("OrdersHandleList")]
[FormValueRequired("handle-two")]
public ActionResult OrdersHandleTwo(OrderHandleModel model)
{
}
第一个函数对应着视图OrdersHandleList.cshtml;第二个函数对应按下submit handle-one按钮之后的处理函数,第三个函数对应按下submit handle-two按钮之后的处理函数。
像这类情况,几个函数名都可以不同,第一个函数不带参数,其对应视图,并给model的成员赋值;第二个函数必须带有[HttpPost, ActionName("OrdersHandleList")],其中OrdersHandleList表示其所处的视图所对应的action,[FormValueRequired("handle-one")]中描述的是该函数所对应的submit按钮的名称。第三个函数与第二个类似。
3、 使用Html.Telerik().Grid的视图
使用Html.Telerik().Grid的视图一般都分为两部分,上面是一些查询条件和一个查询按钮,下面是一个grid。这种视图中,一般都会使用到grid的Select命令,会给该命令赋一个给grid绑定数据的函数。
如果需要在每一条记录行后面显示“编辑”和“删除”,则需要添加Edit和Delete命令。在Columns中添加下面的语句:
columns.Command(commands=>
{
commands.Edit().Text(T("Admin.Common.Edit").Text);
commands.Delete().Text(T("Admin.Common.Delete").Text);
}).Width(180);
这样的话,就需要给Update(Edit包括update和cancel,cancel不需要绑定任何函数)和Delete命令绑定函数。
一般通过下面的语句进行绑定:
.DataBinding(dataBinding=>
{
dataBinding.Ajax()
.Select("OrdersList", "Order")
.Update("OrdersUpdate", "Order")
.Delete("OrdersDelete", "Order");
})
关于视图中这部分完整的code如下:
<tableclass="adminContent">
<tr>
<td>
@(Html.Telerik().Grid<OrderPaymentModel>()
.Name("orders-grid")
.ClientEvents(events=> events
.OnDataBinding("onDataBinding")
.OnDataBound("onDataBound"))
.DataKeys(x =>
{
x.Add(y =>y.Id).RouteKey("Id");
})
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("OrdersList","Order")
.Update("OrdersUpdate","Order")
.Delete("OrdersDelete","Order");
})
.Columns(columns =>
{
columns.Bound(x=> x.Id)
.ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= Id#>' class='checkboxGroups'/>")
.Title("<input id='mastercheckbox' type='checkbox'/>")
.Width(50)
.HtmlAttributes(new{ style ="text-align:center" })
.HeaderHtmlAttributes(new{ style ="text-align:center" });
columns.Bound(x=> x.Id);
columns.Bound(x=> x.Email);
columns.Bound(x=> x.StartDateTimeUtc);
columns.Bound(x=> x.EndDateTimeUtc);
columns.Bound(x=> x.CurrentAmount);
columns.Bound(x=> x.TotalAmount);
columns.Command(commands=>
{
commands.Edit().Text(T("Admin.Common.Edit").Text);
commands.Delete().Text(T("Admin.Common.Delete").Text);
}).Width(180);
})
.Pageable(settings=> settings.PageSize(gridPageSize).Position(GridPagerPosition.Both))
.EnableCustomBinding(true))
</td>
</tr>
</table>
在cs文件中,我们有如下几个函数:
public ActionResult OrdersList()
{
}
[GridAction(EnableCustomBinding = true)]
public ActionResult OrdersList (GridCommand command,OrderModel model)
{
}
[GridAction(EnableCustomBinding = true)]
public ActionResult OrderUpdate(GridCommand command,OrderModel model)
{
}
[GridAction(EnableCustomBinding = true)]
public ActionResult OrderDelete(GridCommand command,OrderModel model)
{
}
第一个函数对应着视图OrdersList.cshtml;第二个函数负责为grid绑定数据;第三个函数是点击Update按钮时执行;第四个函数是点击Delete按钮时执行。后三个函数必须带着[GridAction(EnableCustomBinding = true)],与视图中的.EnableCustomBinding(true)对应;另外,它们的参数都是(GridCommand command, OrderModel model)。
- nopcommerce笔记:视图中按钮与后台action的对应关系
- NopCommerce的后台分离技术(自定义视图引擎)
- nopcommerce笔记:后台菜单中添加新菜单项
- angularJS $resource与后台restapi的对应关系
- 4+1视图与UML对应关系
- 4+1视图与UML对应关系 .
- struts2中namespace与jsp页面请求action路径对应关系
- JSP页面结合Struts2如何传递复选框对应的id数组到后台action中
- abap学习笔记-SAP字段与表的对应关系
- Struts2利用convention-plugin 实现零配置时Action与jsp的对应关系
- J2EE中后台action与ajax的搭配使用
- 一个表单中有编辑和删除两个按钮分别调用后台action的不同方法
- SQL SERVER与C#中数据类型的对应关系
- SQL SERVER与C#中数据类型的对应关系
- sqlserver与c#中数据类型的对应关系
- sqlserver与c#中数据类型的对应关系
- SQL SERVER与C#中数据类型的对应关系
- sqlserver与c#中数据类型的对应关系
- 找工作复习中--Struts2输出图片流到页面
- CCNA网络技术实验手册:交换机密码恢复
- 新浪微博开发获得OAuth2.0授权的经历
- C++本类可以访问本身类的私有成员(即拷贝构造函数可以访问本身对象的私有成员)
- 程序员面试精要-C/C++程序设计-程序设计基本概念(面试宝典读书笔记)
- nopcommerce笔记:视图中按钮与后台action的对应关系
- 三足鼎立 2552
- getRequestDispatcher()与sendRedirect()的区别
- Zookeeper分析
- am335x uart5配置
- 【温故而知新】C和C++9:STL中的set容器
- Java web开发中的jsp知识总结
- YUV与YCbCr区别
- iOS NSTimeInterval 转成 NSDate