asp.net-mvc-3 – Asp.net Mvc3 webgrid和分页
|
我正在尝试学习 Asp.net mvc.我知道它与形式的不同,我需要改变我的思维方式.我的问题是关于webgrid.当我将webgrid添加到我的页面并点击搜索按钮与Post发送它渲染表与寻呼机等等.但是寻呼机上的链接不是发布形式,而是链接,我丢失了所有表单的数据. 控制器有两个索引方法,一个是get和另一个用于post.为了让我什么也不做,我只需要创建一个新的viewmodel,在这种情况下,Search类并设置它来查看.对于我的帖子方法,我抓住我的视图模型做搜索并设置填充的viewmodel来查看. 问题:webgrid将寻呼机渲染为链接,因此它将进入索引获取,但由于它不是发布请求,我没有填写任何表单字段,我的搜索将不提供相同的结果集. 可能示例代码可以更好地解释它. 视图: <form action="" method="post">
Esas no : @Html.TextBoxFor(x=>x.Name)
Yil : @Html.TextBoxFor(x=>x.Year)
<input type="submit" value="Search" />
<hr />
@ViewBag.Message
<hr />
@{ var grid = new WebGrid(Model.Results,rowsPerPage:5);}
@grid.GetHtml(tableStyle:"table",htmlAttributes:new {id="tbl"} )
</form>
这是我的控制器:搜索发生在索引Post方法,它只有我的viewmodel类. private ISearchContext _sc;
public MyController(ISearchContext sc)
{
_dc = dc;
}
//
// GET: /Dava/
public ActionResult Index()
{
var search = new Search();
ViewBag.Message = "";
return View(search);
}
[HttpPost]
public ActionResult Index(Search search)
{
Search sres = _dc.SearchFromRepository(search);
ViewBag.Message = String.Format("Count:{0} ",sres.Results.Count);
return View(sres);
}
搜索模型类如下: public class Search
{
public int Year { get; set; }
public string Name { get; set; }
public IList<Item> Results { get; set; }
public Search()
{
Results = new List<Item>();
}
}
解决方法解决此问题的一种方法是使用javascript并订阅任何寻呼机链接的点击事件,然后获取所需页面的值,将其注入到表单上的隐藏字段中,并将表单提交到服务器,以便另外两个值也被发送.因此,首先在搜索视图模型上添加一个页面可空整数属性,并将相应的隐藏字段添加到将包含所选页码的表单中: @Html.HiddenFor(x => x.Page,new { id = "page" })
那么所有你需要的是一个小的JavaScript片段到页面中订阅寻呼机链接的.click事件: $(function () {
$('tfoot a').click(function () {
// when the user clicks on any of the pager links
// try to extract the page number from the link and
// set the value of the hidden field
var page = this.href.match(/page=([0-9])+/)[1];
$('#page').val(page);
// submit the form so that the POST action is invoked
// passing along the search criteria (Name and Year) along
// with the page hidden field value to the Index action
$('form').submit();
// cancel the default action of the link which is to simply redirect
// to the Index action using a GET verb.
return false;
});
}); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 单元测试传统ASP.NET Webforms应用程序
- asp.net – 如何在Visual Studio中生成Web服务的WSDL文件
- asp.net-mvc – asp.net mvc强类型助手 – 你的渲染绑定对象
- asp.net-mvc – ScriptBundle中的{version}是什么(“/ scri
- asp.net-mvc – Html.BeginForm使用FormMethod.GET丢失rout
- asp.net-mvc – ASP.NET MVC 3 RC和Azure?
- ASP.NET OutputCache和Cookies
- asp.net-mvc-3 – MailTo链接在Razor
- 有什么好的参考或工具可用于将ASP转换为ASP.NET?
- asp.net-mvc-4 – 如何解决Antlr3依赖地狱
- 如何关闭ASP.NET必需的字段验证器“丢失焦点”行
- asp.net-mvc-3 – ASP.NET MVC DropDownListFor从
- asp.net-mvc – ASP.NET MVC 5中的级联下拉列表
- asp.net – 生产网络服务器上的间歇性高CPU(100%
- asp.net – ReportViewer阻止其他功能,直到报告查
- asp.net-mvc – 为什么Asp.NET MVC通过Asp.NET W
- asp.net-mvc – ASP.NET MVC – 表单和模型绑定器
- ASP.NET中maxPageStateFieldLength的最佳值是多少
- asp.net – 哪个控件导致回发?
- 如何让asp.net不自动转换URL中的转义斜杠?
