我有一个操作方法如下的控制器: public class InventoryController : Controller { public ActionResult ViewStockNext(int firstItem) { // Do some stuff } } 当我运行它时,我得到一个错误,指出: 参数字典中不包含参数“firstItem”的types“System.Int32”的有效值。 要使参数可选,其types应该是引用types或Nullabletypes。 我曾经在一点工作,我决定尝试没有参数的function。 发现控制器不是持久的,我把参数放回去,现在当我调用方法时,它拒绝识别参数。 我正在使用这个URL语法来调用该操作: http://localhost:2316/Inventory/ViewStockNext/11 任何想法,为什么我会得到这个错误,我需要做什么来解决它? 我试着添加另一个方法,它采取了一个整数的类,它也失败了相同的原因。 我试着添加一个接受一个string,并将string设置为空。 我已经尝试添加一个没有参数,这工作正常,但当然不会满足我的需求。
在过去,我通过让所有的控制器都从一个通用的基础控制器inheritance,将公共属性(如当前用户)以全局方式粘贴到ViewData / ViewBag上。 这使我可以在基本控制器上使用IoC,而不仅仅是将这些数据分享到全局共享中。 我想知道是否有一种替代方式插入这种types的代码到MVCpipe道?
我想知道我应该如何分组我的仓库? 就像我在asp.net mvc和我的书中看到的例子,他们基本上每个数据库表使用一个存储库。 但是,这看起来像很多的知识库,导致你不得不在稍后调用许多存储库进行嘲弄和调整。 所以我猜我应该把他们分组。 但是我不知道如何分组。 现在我做了一个注册库来处理我所有的注册内容。 不过,我需要更新4个表格,之前我有3个库来做到这一点。 例如,其中一个表是许可证表。 当他们注册我看他们的密钥,并检查它,看看是否存在数据库中。 现在如果我需要检查这个许可证密钥或其他地方的其他地方,然后registry中的其他东西,会发生什么? 一个地方可以login(检查密钥是否没有过期)。 那么在这种情况下我会做什么? 重写代码(中断DRY)? 尝试将这两个存储库一起处理,并希望在其他某个时间点不需要任何方法(例如,也许我可能有一个方法来检查用户名是否被使用 – 也许我需要在别的地方)。 另外如果我把它们合并在一起,我会需要2个服务层去同一个存储库,因为我认为有一个网站的2个不同部分的所有逻辑将是漫长的,我必须有像ValidateLogin(),ValdiateRegistrationForm() ,ValdiateLoginRetrievePassword()等。 或者调用Repository,只是有一个怪异的名称? 创build一个具有足够通用名称的存储库似乎很难,因此您可以将其用于应用程序的许多位置,并且仍然有意义,我不认为在存储库中调用另一个存储库会是一个好的做法吗?
如果给定路线: {FeedName} / {ItemPermalink} 例如:/ Blog / Hello-World 如果项目不存在,我想返回一个404。在ASP.NET MVC中做这件事的正确方法是什么?
[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist() { var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); context .Setup(c => c.Request) .Returns(request.Object); HomeController controller = new HomeController(); controller.HttpContext = context; //Here I am getting an error (read only). … } 我的基础控制器有一个重载的Initialize,得到这个requestContext。 我正试图通过这一点,但我没有做正确的事情。 protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); } 我在哪里可以得到更多关于使用Moq嘲弄我的RequestContext和HttpContext的信息? 我试图嘲笑cookies和一般情况。
渲染子模板的适当方式是什么? 有什么区别? 两者似乎都适合我。 为什么@Html.RenderPartial()不再工作?
我遇到了我的ASP.NET MVC 3项目的以下错误: 发现多个与名为“Home”的控制器相匹配的types。 如果为该请求提供服务的路由(“主页/ {操作} / {id}”)没有指定命名空间来search与该请求匹配的控制器,则会发生这种情况。 如果是这种情况,请通过调用带有“namespaces”参数的“MapRoute”方法的重载来注册此路由。 “家”的请求find了以下匹配的控制器:MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController 我有一个HomeController在我的默认控制器文件夹中,类名称为MyCompany.MyProject.WebMvc.Controllers.HomeController。 我的RegisterRoutes方法,在我的global.asax,如下所示: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } 然后我有一个名为Company的区域,在该区域的默认控制器文件夹中有一个HomeController,其类名为MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController。 CompanyAreaRegistration文件中的RegisterArea方法如下所示: public override void RegisterArea(AreaRegistrationContext context) { […]
我想在MVC中有DropDownListFor @foreach (var item in Model) { @Html.DropDownListFor(modelItem => item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" }) } 在控制器中 public ActionResult ArticleList(int id) { ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel(); Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null; Expression<Func<NumberTitle, bool>> filterExpr = null; if (id > 0) { filterExpr = […]
如何在cshtml文件中将布尔值呈现为JavaScriptvariables? 目前这显示一个语法错误: <script type="text/javascript" > var myViewModel = { isFollowing: @Model.IsFollowing // This is a C# bool }; </script>
什么是最自然的方式来返回一个空的ActionResult(为儿童行动)? public ActionResult TestAction(bool returnValue) { if (!returnValue) return View(EmptyView); return View(RealView); } 我可以看到的一个选项是创build一个空视图,并在EmptyView中引用它,但可能有任何内置选项?