我正在尝试找出正确的Razor语法,以便将特定*.cshtml的JavaScript文件与_Layout.cshtml中定义的所有其他包含文件一起放在head标记中.
我想要包含一个javascript引用,如:
<script src="@Url.Content("~/Scripts/jqueryFoo.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
如果我有一个Razor View,那么在不必将它添加到Layout的情况下包含它的正确方法是什么(我只需要在一个特定的View中,而不是所有的都需要它)
在aspx中,我们可以使用内容占位符..我发现在mvc中使用aspx而不是Razor视图的旧示例..
我使用默认模板创建了一个MVC 4,@Script.Render(~"bundles/jquery")后面会调用它@RenderBody().根据这篇文章,这是推荐的执行顺序,以防止加载脚本来阻止页面的呈现.
我想在我的视图或我的RenderBody()部分中添加一个小的jQuery调用.看起来像这样,在我的观点的顶部:
<script type="text/javascript">
$(document).ready(function()
{
$("#eta_table").tablesorter({
headers: {
0: { sorter: false }
}
});
});
Run Code Online (Sandbox Code Playgroud)
但是,这将始终抛出错误,Error: '$' is undefined因为jQuery直到之后才加载RenderBody().
我无法想象这是一个新问题,它似乎是一个相当普遍的任务......有关如何处理这个问题的任何建议?
作为参考,这里是加载jQuery的地方:
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
Run Code Online (Sandbox Code Playgroud)
编辑
我最终将上面的脚本移动到我的scripts.js文件中,并将其加载到布局页面中的jQuery下面,如下所示:
bundles.Add(new ScriptBundle("~/bundles/custom").Include(
"~/Scripts/Custom/tablesorter.js",
"~/Scripts/Custom/scripts.js"));
Run Code Online (Sandbox Code Playgroud)
和HTML:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/custom")
@RenderSection("scripts", required: false)
</body>
Run Code Online (Sandbox Code Playgroud)
除此之外似乎仍然是错误的,因为现在必须为使用主布局视图的每个页面加载脚本.它有效,但是,这是最好的方法吗?
我一般关于渲染管道的问题,我看过ASP.NET MVC管道方案,还有一个名为View Engine的步骤,它是如何工作的?我想知道这种情况:
Response.End()在@{}页面开头的块中使用这个中断执行页面并停止渲染视图?我想知道在此链接上引用的代码是否是线程安全的.我的意思是不适用于多线程.我只是不希望输出交叉用户页面请求.
从视图或部分视图添加CSS或JavaScript文件到布局头
我是否会遇到对页面的许多请求可能跨越样式和脚本的情况.
如果你对MVC有所了解,那么在渲染视图并将结果呈现给布局(母版页)时调用add方法可能会有所帮助.
当前解决方案(如果需要改进,请告诉我)
public static MyCompanyHtmlHelpers GetInstance(HtmlHelper htmlHelper)
{
MyCompanyHtmlHelpers _instance;
if (htmlHelper.ViewData["SectionHelper"] == null)
{
_instance = new MyCompanyHtmlHelpers();
htmlHelper.ViewData["SectionHelper"] = _instance;
}
else
_instance = htmlHelper.ViewData["SectionHelper"] as MyCompanyHtmlHelpers;
_instance.SetHtmlHelper(htmlHelper);
return _instance;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我目前正在使用类似于以下代码的方法将脚本和css文件添加到布局文件的头部.
public static class HtmlHelperExtensions
{
public static MyCompanyHtmlHelpers MyCompany(this HtmlHelper htmlHelper)
{
return MyCompanyHtmlHelpers.GetInstance(htmlHelper);
}
}
public class MyCompanyHtmlHelpers
{
private static MyCompanyHtmlHelpers _instance;
public static MyCompanyHtmlHelpers GetInstance(HtmlHelper htmlHelper)
{
if (_instance == null)
_instance = new MyCompanyHtmlHelpers();
_instance.SetHtmlHelper(htmlHelper);
return _instance;
}
private HtmlHelper _htmlHelper;
public ItemRegistrar Styles { get; private set; }
public ItemRegistrar Scripts { get; private set; }
public MyCompanyHtmlHelpers()
{
Styles = new ItemRegistrar(ItemRegistrarFromatters.StyleFormat);
Scripts = new ItemRegistrar(ItemRegistrarFromatters.ScriptFormat);
}
private void SetHtmlHelper(HtmlHelper htmlHelper)
{
_htmlHelper …Run Code Online (Sandbox Code Playgroud) 我从第一个MVC应用程序开始.在这里,我有基本的困惑.实际上,默认的_Layout.cshtml文件创建如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<script>
</script>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我使用了基本模板,因此没有任何模板.但请检查'@ Scripts.Render("〜/ bundles/jquery")'行.它在@RenderBody()之后.所以它实际上是在身体部分之后添加的.
我认为这实际上是最好的做法.但如果我添加$.(文档).ready它会显示以下错误
Microsoft JScript运行时错误:'$'未定义
基于错误,它因脚本标记而异.我刚刚在@Render身体和最后一页之前移动了@@ Scripts.Render("〜/ bundles/jquery")'行
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
</head>
<body>
<script>
</script>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
applicationw适用于我的jquery.
那么为什么会这样呢?所以在@RenderBody之前总是需要添加标签的脚本吗?那为什么默认模板显示在错误的位置?
我以前用过这个,但我忘记了方法的名称.我猜它必须是MVC3/Razor独有的.是否有一种方法允许您包含JavaScript或CSS文件,然后指定它应该在头部.我记得它是两种类似于以下的不同方法
IncludeJS("my.js").AtHead();
IncludeCSS("my.css").AtHead();
Run Code Online (Sandbox Code Playgroud)
他们可能是HTML助手,但我无法在任何地方找到任何引用.我疯了吗?
我一直在网上搜索一段时间,但无法为我的问题找到合适的解决方案.这篇文章也没有真正帮助,因为在ksoap2 for android中使用的类和方法不存在:使用KSOAP for android的基本HTTP身份验证
我正在尝试访问我在sap soa管理器中设置的SAP Web服务.Web服务需要http头中的基本身份验证.通过soapUI访问此Web服务不是问题,因为可以在那里设置http身份验证.
我的问题:我想使用Android设备访问Web服务,我想使用KSOAP2 for Android,因为我已经有了一些使用该库的经验.我的问题是我不知道如何对webservice进行身份验证?
有没有人有类似的问题,知道如何解决它?如果你能帮助我,我将不胜感激!
authentication android web-services http-headers android-ksoap2
asp.net-mvc ×5
razor ×5
c# ×2
include ×2
javascript ×2
jquery ×2
android ×1
asp.net ×1
css ×1
http-headers ×1
pipeline ×1
web-services ×1