小编Edw*_*uay的帖子

ASP.NET MVC中的CSS和Javascript相对路径混淆

我的javascript路径在此页面上运行: http:// localhost:53049 /

但不在此页面上: http:// localhost:53049/Home/Messages

原因是相对路径不同,前者需要("js/...")而后者需要("../../ js/...").

我在我的Site.Master文件中包含了我的javascript:

<script type="text/javascript" src="js/jquery.jqGrid.js"></script>
<script type="text/javascript" src="~/js/jquery.jqGrid.js"></script>
<script type="text/javascript" src="<%= this.ResolveClientUrl("~/Scripts/jquery-1.2.6.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

我如何解决这个相对路径的疯狂,即ASP.NET MVC在Site.Master中设置CSS/Javascript路径的最佳实践方式是什么,这样无论视图的URL多​​么深,它们都适用于每个视图.

附录:

似乎对于Index视图,任何路径都可以工作,奇怪的是:

<script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="../../../Scripts/jquery-1.2.6.js"></script>
Run Code Online (Sandbox Code Playgroud)

但对于任何其他页面(具有更深URL的页面),这些都不起作用.

这里发生了什么?我们如何在Site.Master中设置一次Javascript路径,它们适用于所有页面?

ADDENUM II:

事实证明只有jqgrid javascript文件(而不是jquery文件)的问题,显然在该文件中它引用其他javascript文件并且混淆:

<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

22
推荐指数
2
解决办法
3万
查看次数

创建一次使用的变量是一种好习惯吗?

我的一位同事重构了这段代码:

private void btnGeneral_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)e.OriginalSource;
    Type type = this.GetType();
    Assembly assembly = type.Assembly;
    string userControlFullName = String.Format("{0}.{1}", type.Namespace, button.Name);
    UserControl userControl = (UserControl)assembly.CreateInstance(userControlFullName);
}
Run Code Online (Sandbox Code Playgroud)

这段代码:

private void btnGeneral_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)e.OriginalSource;
    Type type = this.GetType();
    Assembly assembly = type.Assembly;
    UserControl userControl = (UserControl)assembly.CreateInstance(String.Format("{0}.{1}", type.Namespace, button.Name));
}
Run Code Online (Sandbox Code Playgroud)

如果它只使用一次,你就不需要创建一个变量.

我的回答是,制作曾经使用过的变量是很好的做法,因为它:

  • 作为和减少评论(很清楚"userControlFullName"是什么)
  • 使代码更容易阅读,即更多的代码"读起来像英语"
  • 通过用明确的变量名替换部分语句来避免超长语句
  • 因为你可以将鼠标悬停在变量名上,所以更容易调试,例如在没有调试器的PHP编程的情况下,更容易回显这些变量名来获取它们的值

反对这种方式的论据"更多代码行","不必要的变量"是使编译器的生活更容易但没有显着的速度或资源节省的参数.

任何人都可以想到一个不应该创建曾经使用过的变量名的情况吗?

variables refactoring coding-style

22
推荐指数
5
解决办法
1512
查看次数

如何使用触发器更改TextBlock的可见性?

当我尝试编译以下代码时,我得到错误"可见性"成员无效,因为它没有合格的类型名称.

我需要更改什么才能在Status = off时使TextBlock消失

XAML:

<Window x:Class="TestTrigger123345.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <TextBlock Text="This is a sentence.">
            <TextBlock.Triggers>
                <Trigger Property="{Binding Status}" Value="off">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </Trigger>
            </TextBlock.Triggers>
        </TextBlock>
        <TextBlock Text="{Binding Status}"/>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using System.Windows;

namespace TestTrigger123345
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            DataContext = this;
            Status = "off";
        }

        public string Status { get; set; }

    }
}
Run Code Online (Sandbox Code Playgroud)

我改为DataTrigger和Dependency Properties,它得到了同样的错误:

XAML:

<Window x:Class="TestTrigger123345.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml triggers

22
推荐指数
3
解决办法
3万
查看次数

如何在LINQ中定义变量?

这段代码:

string[] files = {"test.txt", 
    "test2.txt", 
    "notes.txt", 
    "notes.doc", 
    "data.xml", 
    "test.xml", 
    "test.html", 
    "notes.txt", 
    "test.as"};

files.ToList().ForEach(f => Console.WriteLine(
        f.Substring(
            f.IndexOf('.') + 1, 
            f.Length - f.IndexOf('.') - 1
            )
    ));
Run Code Online (Sandbox Code Playgroud)

产生这个清单:

txt
txt
txt
doc
xml
xml
html
txt
as
Run Code Online (Sandbox Code Playgroud)

有没有办法建立f.IndexOf('.')一个变量,以便在更复杂的LINQ查询中,我在一个地方定义了这个?

c# linq

22
推荐指数
2
解决办法
2万
查看次数

处理第一次通过foreach的简单方法?

我经常发现自己在foreach循环中执行以下索引计数器混乱,以确定我是否在第一个元素上.有没有一种更优雅的方式在C#中执行此操作,有些类似的东西if(this.foreach.Pass == 1)

int index = 0;
foreach (var websitePage in websitePages) {
    if(index == 0)
        classAttributePart = " class=\"first\"";
    sb.AppendLine(String.Format("<li" + classAttributePart + ">" + 
        "<a href=\"{0}\">{1}</a></li>", 
        websitePage.GetFileName(), websitePage.Title));
    index++;
}
Run Code Online (Sandbox Code Playgroud)

c# foreach

22
推荐指数
2
解决办法
946
查看次数

如何选择没有ID字段的SQL表的最后10行?

我有一个25000行的MySQL表.

这是一个导入的CSV文件,所以我想查看最后十行以确保它导入所有内容.

但是,由于没有ID列,我不能说:

SELECT * FROM big_table ORDER BY id DESC
Run Code Online (Sandbox Code Playgroud)

什么SQL语句会告诉我这个表的最后10行?

表的结构就是这样:

columns are: A, B, C, D, ..., AA, AB, AC, ... (like Excel)
all fields are of type TEXT
Run Code Online (Sandbox Code Playgroud)

mysql sql phpmyadmin

22
推荐指数
5
解决办法
16万
查看次数

JavaScript中的双管道(||)抛出错误而不是评估为假

我读到JavaScript中的双管道检查变量是否是假的,这undefined是JavaScript中的虚假值,例如

这意味着如果值为falsey(例如0,"",null,undefined(另请参见JavaScript中的所有falsey值)),则将其视为false; 否则它被视为真实.

所以我尝试了这一点,发现undefined确实没有被评估为假,而是抛出一个错误:

let elemContent = document.getElementById('content');

let a = null;
let b = 2;

elemContent.innerHTML += a || 'ok'; // "ok"
elemContent.innerHTML += b || 'ok'; // "2"
elemContent.innerHTML += whatever || 'ok'; // "ERROR: whatever is not defined"
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/ueqo6yko

是否是undefinedJavaScript中的虚假价值,或者如何理解这一矛盾?

javascript undefined boolean-operations

22
推荐指数
3
解决办法
2753
查看次数

如何从Amazon Book API获取图书图形和说明?

此URL将一个ISBN号发送给亚马逊,并获取一小部分XML,包括作者,标题和发布者.

但是,我还想获得标题的小,中,大图形和书籍描述.

问题:我无法在Google或在Amazon Associates登录我的"AWS账户"时找到可用的REST URL示例/文档.

我发现2003 - 2005年有很多例子,但它们都已经过时并且出错了,似乎亚马逊的云网络服务已经为他们的书籍模糊了他们简单的REST API文档.

有人能指点我如何通过REST/XML获取亚马逊书籍的详细信息吗?

这是我到目前为止所尝试的内容.

api amazon

21
推荐指数
1
解决办法
2万
查看次数

如何在我的WPF应用程序中弹出MessageBox.Show()?

我有一个700w x 300h的WPF应用程序,可以将它拖到我的大屏幕上的任何地方.

我的应用程序执行时:

MessageBox.Show("Sorry, this function is not yet implemented.");
Run Code Online (Sandbox Code Playgroud)

消息框出现在我的屏幕中间,甚至可能在应用程序本身附近.

如何让我的MessageBox出现在我的应用程序中间?

wpf

21
推荐指数
3
解决办法
3万
查看次数

如何在DataTrigger中切换TextBlock的可见性?

此代码有效(当ControlType ="dropDown"时,背景为黄色):

<Window x:Class="TestCollapsed.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestCollapsed.Commands"
    Title="Main Window" Height="400" Width="800">
    <Window.Resources>
        <Style x:Key="DropDownStyle" TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ControlType}" Value="dropDown">
                    <Setter Property="Background" Value="Yellow"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBlock Visibility="Visible" 
                   Text="This is going to be the dropdown control."
                   Style="{StaticResource DropDownStyle}"/>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

但是这个代码不无法正常工作(当ControlType ="下拉列表",然后将TextBlock仍然是不可见的):

<Window x:Class="TestCollapsed.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestCollapsed.Commands"
    Title="Main Window" Height="400" Width="800">
    <Window.Resources>
        <Style x:Key="DropDownStyle" TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ControlType}" Value="dropDown">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBlock Visibility="Collapsed" …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datatrigger

21
推荐指数
1
解决办法
3万
查看次数