我正在尝试用MvcContrib来分页Html.Pager(),但我的剃刀视图无法引用正确的命名空间.
控制器还可以:
using MvcContrib.Pagination;
...
public ActionResult List(int? page)
{
return View(new UserRepository().GetUserList().AsPagination(page ?? 1, 10));
}
Run Code Online (Sandbox Code Playgroud)
但是,观点无法理解:
@using MvcContrib
Run Code Online (Sandbox Code Playgroud)
要么
@Html.Pager((IPagination)Model)
Run Code Online (Sandbox Code Playgroud)
我通过NuGet安装了MvcContrib.我尝试添加MvcContrib,MvcContrib.UI并MvcContrib.UI.Html命名空间<pages><namespaces>在web.config中没有运气.我错过了什么?
我在创建一个新的ASP.NET MVC项目时非常关注.一些教程推荐使用MVC Contrib.如果它实现了使用ASP.NET MVC提高工作效率的承诺,我想获得Stack Overflow社区的意见.基本上MVC Contrib的好处值得为我的应用程序添加另一个漏洞抽象?
我已阅读此帖,我想使用ControllerExtensions.RedirectToAction方法.但我有System.Security.VerificationException其中说:类型参数'[MyController type]'违反了类型参数'T'的约束.
我的控制器声明如下:
public class ProductsSearchController : Controller
{
...
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我.我还尝试从这里下载最新的MvcContrib库.它没有帮助我.
我注意到一个有趣的事实.只有在从单元测试中调用时才会出现此异常.但是从网站上使用时也不例外.但它似乎无法正常工作.当我将对象传递给表达式中的动作时,如下所示:
this.RedirectToAction(x => x.Index(filter))
Run Code Online (Sandbox Code Playgroud)
它只是调用.ToString这个对象!我得到这样的网址:
产品搜索?过滤= WebShop.FinderModel.Filters.ProductsFilter
怎么了?
我正在修改MVCContrib网格,并坚持如何基于数据格式化网格中的一行数据.
例如,假设我们有一个产品网格,其中每个产品都有数据字段,如名称,价格和已停产.我想强调所有已停产的产品行.
一种解决方法是在客户端使用jQuery将CSS类应用于已停止的单元格为TRUE的那些行,但这似乎是一个脆弱的解决方案.我希望有一种方法可以通过Html.Grid方法调用在服务器端执行此操作.
谢谢
让我说我渲染一个复选框:
@Html.CheckboxFor(x => x.Checked) // Checked is true by default
Run Code Online (Sandbox Code Playgroud)
ASP将把它变为:
<input checked="checked" data-val="true" data-val-required="The field is required." id="Checked" name="Checked" type="checkbox" value="true" />
<input name="Checked" type="hidden" value="false" />
Run Code Online (Sandbox Code Playgroud)
由于ASP为Checkbox输出两个具有相同名称的输入,因此在使用复选框提交表单时,我们在URL中也会获得两个GET参数:
http://...?Checked=true&Checked=false
Run Code Online (Sandbox Code Playgroud)
可以说我也在使用MvcContrib来显示带有排序的表.
当我对列进行排序时,MvcContrib无法理解重复的GET参数,而是写入?Checked=true&Checked=false,而不是写入,?Checked=true%2CfalseMVC3无法将其解析为bool.排序后的错误消息是:
String was not recognized as a valid Boolean.
Run Code Online (Sandbox Code Playgroud)
有没有其他人在MvcContrib网格中遇到过这个问题?
伙计们,
到今天为止我应该在我的项目中引入T4MVC还是使用MvcContrib的强类型?
return RedirectToAction(MVC.MyController.MyAction());
Run Code Online (Sandbox Code Playgroud)
要么
return RedirectToAction<MyController>(c => c.MyAction());
Run Code Online (Sandbox Code Playgroud)
努力坚持标准/主流并保持最新.
我知道,这个网站上有问答,我很想知道什么是最新的和最好的,而不是2年前.
提前致谢.
asp.net-mvc asp.net-mvc-futures mvccontrib t4mvc asp.net-mvc-3
对于有便携式区域经验的人,
我想知道使用它们是否有缺点以及为什么不使用它们将大型MVC应用程序分解为组件部分.
在我的Asp.net MVC应用程序中,我在控制器上有两个方法,一个用于用户第一次到达视图时,另一个用于在所述视图上提交表单时.
public ActionResult Foo() {}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Foo(string id, Account accountToFoo) {}
Run Code Online (Sandbox Code Playgroud)
在第二个动作中,有一个自定义模型绑定器正在组装我正在处理的帐户对象,尽管这并不重要.这一切都可以在服务器上进行本地测试.
我们尝试编写单元测试以测试所有不同的视图是否正确路由到包括HTTP POST的那些视图.为此,我们一直在使用mvccontrib的测试助手.
测试变得非常简单
"~/account/foo/myusername".
Route().
ShouldMapTo<AccountController>(c => c.Foo("myusername"));
Run Code Online (Sandbox Code Playgroud)
我的问题是在测试POST路由时,如何编写用于验证帖子是否正在接收准确值的lambda,类似于上面的GET测试?
对于POST,它看起来像:
"~/account/foo".
WithMethod(HttpVerbs.Post).
ShouldMapTo<AccountController>(a => something_something);
Run Code Online (Sandbox Code Playgroud)
这是我的lambda中的某些东西,我遇到了麻烦.使用任意值不起作用("a => a.Foo(0,new Account()").如何将预期值指定为测试的一部分?
编辑 我希望有一些类似于Moq对foo.Setup(s => s.Foo(It.IsAny(),It.Is(i => i> 32))等语句的lambdas的方式等等即使我必须明确提供值,这是可行的 - 我似乎无法理解所需的结构来传递这些显式值.
我希望我的列标题也是使用MVCContrib网格的页脚.如何添加页脚?
<% Html.Grid(Model).Columns(col =>
{
col.For(c => c.sub_id).Named("Id");
col.For(c => c.name).Named("Name");
col.For(c => c.group).Named("Group");
col.For(c => c.insurance_GL).Named("Insurance").Format("{0:d}");
}).Attributes(id => "list").Render(); %>
Run Code Online (Sandbox Code Playgroud) 我的意思是,现在我们已经尽可能地使用现代模板引擎将你的html标记与你的代码分开了(在过去,程序员通常只是在php中连接字符串,这很糟糕.)
然后我看一下同事生成一个html表的代码,它看起来像:
<% Html.Grid(Model).Columns(column => {
column.For(x => Html.ActionLink("Edit", "Edit", new { id = x.Id })).Attributes(width => "30px").DoNotEncode();
column.For(x => Html.ActionLink("Delete", "Delete", new { id = x.Id }, new { @class = "delete" })).Attributes(width => "95px").DoNotEncode();
column.For(x => x.Id).Named("Code");
column.For(x => x.Name).Named("Name").HeaderAttributes(align => "left");
column.For(x => x.CPF).Named("CPF");
})
.Attributes(width => "100%", border => "0", cellpadding => "0", cellspacing => "0", @class => "data-table")
.Empty("No users found!")
.RowStart(row => string.Format("<tr class='row{0}'>", row.IsAlternate ? "-alternating" : ""))
.Render();
%>
Run Code Online (Sandbox Code Playgroud)
他认为这很棒,我认为这很难看,所以我想知道更多人的意见.
mvccontrib ×10
asp.net-mvc ×8
asp.net ×3
c# ×1
coding-style ×1
grid ×1
pagination ×1
razor ×1
t4mvc ×1
url-routing ×1