在我的cshtml文件中,我有很多块,有这样的东西:
@if(Model.foo)
{
<span>Hello World</span>
}
Run Code Online (Sandbox Code Playgroud)
跨度的唯一原因是因为我找不到任何其他方法来强制它识别"Hello World"是html的一部分,除非我将它包围在html标签中.是否有一种很好的方法来逃避不涉及向显示器添加无意义标签的代码?
表达式树可能不包含使用可选参数的调用或调用
return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
Run Code Online (Sandbox Code Playgroud)
编辑有第二个可空的参数.
为什么是这样?
我是唯一一个在10月15日安装了Windows Update(8.1)的人,突然MVC由于这个警告而停止工作了吗?
警告1无法解析此引用.无法找到程序集"System.Web.Mvc,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.
似乎这个Windows更新安装了版本号为4.0.0.1的更新版本的MVC,并从程序文件文件夹中删除旧版本.
有人知道如何在不爬行每个项目的情况下解决这个问题吗?
我有一个View - _Edit住在里面News M/V/C.
我重用了V/M通过CategoryControlleras:
return PartialView("/Views/News/_Edit.cshtml", model);
Run Code Online (Sandbox Code Playgroud)
如何从内部View - _Edit提醒控制器名称?
当我:
alert('@ViewContext. RouteData.Values["controller"].ToString()');
Run Code Online (Sandbox Code Playgroud)
值为:News
但是,URL为:/Category/foobar
有没有办法让价值'Category'提醒?谢谢
我为此感到茫然:
我已经为实体框架(4.1.3)代码第一种方法定义了我的类.一切都很好(我正在制作桌子等),直到我开始播种.
现在当我这样做的时候
Add-Migration "remigrate" ; Update-Database;
Run Code Online (Sandbox Code Playgroud)
我在程序包控制台上收到错误"一个或多个实体的验证失败.有关详细信息,请参阅'EntityValidationErrors'属性."
我的Seed()方法中有一个断点但是因为我在项目没有运行时在控制台上运行它,我对如何获取细节毫无头绪(PS - 我看过线程验证失败对于一个或多个实体,同时使用Entity Framework保存对SQL Server数据库的更改,该实体框架显示了我如何查看属性.)
我知道我的Seed()方法有问题,因为如果我在方法调用之后立即返回,则错误消失.那么如何设置断点以便我可以看到验证错误是什么?有点失落.或者是否有其他方法可以在nuget控制台中跟踪它?
我在Windows Azure上部署了我的MVC-3应用程序.但现在,当我通过staging url它请求它时,显示我(抱歉,处理您的请求时出错).现在我想看到完整的错误消息,默认情况下它隐藏了一些安全原因.我知道我们可以通过web.config文件执行此操作.但是怎么样?
我在global.asax文件的Application_Error事件中有代码,它在发生错误时执行,并将错误的详细信息发送给我自己.
void Application_Error(object sender, EventArgs e)
{
var error = Server.GetLastError();
if (error.Message != "Not Found")
{
// Send email here...
}
}
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio中运行它时工作正常,但是当我发布到我们的实时服务器时,Application_Error事件不会触发.
经过一些测试后,我可以Application_Error在设置时进行射击customErrors="Off",但是将其设置回来可以customErrors="On"阻止事件再次发射.
任何人都可以建议为什么Application_Error在customErrors启用时不会被解雇web.config?
我试图在我的App_Code文件夹中为MVC 3 RTM项目创建一个Razor声明性帮助器.
我遇到的问题是MVC HtmlHelper扩展(如ActionLink)不可用.这是因为编译的帮助程序派生自System.Web.WebPages.HelperPage,虽然它公开了一个Html属性,但它的类型System.Web.WebPages.HtmlHelper而不是System.Web.Mvc.HtmlHelper.
我得到的一种错误的例子是:
'System.Web.Mvc.HtmlHelper'不包含'ActionLink'的定义,也没有扩展方法'ActionLink'接受类型为'System.Web.Mvc.HtmlHelper'的第一个参数'(你是否缺少using指令)或汇编参考?)
我唯一的解决方案是创建自己的HelperPage并覆盖Html属性:
using System.Web.WebPages;
public class HelperPage : System.Web.WebPages.HelperPage
{
// Workaround - exposes the MVC HtmlHelper instead of the normal helper
public static new HtmlHelper Html
{
get { return ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page).Html; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后我必须在每个助手的顶部写下面的内容:
@inherits FunnelWeb.Web.App_Code.HelperPage
@using System.Web.Mvc
@using System.Web.Mvc.Html
@helper DoSomething()
{
@Html.ActionLink("Index", "Home")
}
Run Code Online (Sandbox Code Playgroud)
它是否意味着在MVC 3中这么难,或者我做错了什么?
阅读本文,我了解到有可能允许方法通过使其成为通用方法来接受多种类型的参数.在该示例中,以下代码与类型约束一起使用以确保"U"是一个IEnumerable<T>.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Run Code Online (Sandbox Code Playgroud)
我发现了一些允许添加多个类型约束的代码,例如:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
然而,这个代码出现到强制执行arg必须是一个类型的ParentClass 和 ChildClass.我想要做的是说arg可以是一种类型ParentClass 或 ChildClass以下列方式:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
一如既往地感谢您的帮助!

我在C#中有一个MVC3站点,我有一个特殊的视图是从JavaScript函数提供查询参数,该函数通过以下方式重定向到站点
window.location.href ="../ ActionName?" + query_string;
query_string是JavaScript函数构建的动态查询参数字符串.
这种奇怪的原因是,有时相同的函数将URL传递给ASP.Net webform,因为它必须使用reportviewer控件,备用操作是保存一些参数,在这种情况下它传递给视图.(如果没有意义,可以详细说明)
整个工作正常,直到我将[授权]引入动作方法.如果它到位则中断,没有正常工作,并且[授权]在所有其他方法上正常工作.
在这种情况下,整个URL是966个字符长,在研究之后,默认情况下maxQueryStringLength值似乎是2048,但是可以覆盖到任何类型为integer的值,所以只是对于grins,我添加了
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
Run Code Online (Sandbox Code Playgroud)
密钥下的Web配置文件的密钥.
那里没有欢乐,所以我变得荒谬,并使它成为4096,仍然没有快乐.
现在整个URL长度为966个字符,授权属性不能严重添加另一个1082-3130字符,因此如何确定错误实际是什么,或者为什么设置没有生效.
VS2010 Pro SP1
asp.net-mvc-3 ×10
c# ×4
asp.net-mvc ×2
razor ×2
.net ×1
asp.net ×1
javascript ×1
nuget ×1
types ×1
web-config ×1