小编Voi*_*ing的帖子

当运行WebMatrix的站点访问时,是否有任何受保护的文件类型会返回404?

例如,在外部JavaScript文件中,我在一个简单的$(document).ready函数中有这个:

$.getJSON("/aTest.json", function (jsonObj) {
    $("#testJSONBtn").click(function () {
        var val = "";
        for (var i = 0; i <= jsonObj.events.length; ++i) {
            val += jsonObj.events[i].title + ", " + jsonObj.events[i].date + ", " + jsonObj.events[i].explanation + "<br/>";
        }
        $("#JSONOutput").append(val);
    });
});
Run Code Online (Sandbox Code Playgroud)

JavaScript控制台一直告诉我服务器返回404(未找到),但该文件肯定是该名称,并且正好在该路径上.所有其他资源都可以通过网站访问.我试过移动文件并重命名它,以及其他一些东西,所以我觉得这可能与WebMatrix有关,它运行的IIS版本(它是8?),还是文件扩展我正在使用(.json).外部json文件不应该存储在扩展名为.json的文件中吗?

额外的特点:

我曾经有两个同名文件,一个是.json文件,另一个是.cshtml,它们在同一个目录中.在这段时间内,上面的函数没有返回404,实际上它根本没有返回任何内容......它没有做任何事,但它没有返回任何错误.

如果重要的话,所有ID和选择器都经过五元检查(以及更多).

上面的函数有什么问题,或者外部.js文件(或WebMatrix的IIS)不能像这样访问另一个外部.json文件?

javascript ajax jquery json webmatrix

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

为什么javascript/jQuery不能获得parentNode?

考虑到我有这样的元素:

<p class="ELP">2/1/2013 - <a id="EL3" class="ELLink" href="/Event htms/Event.cshtml?title=Okmulgee Public Schools County Professional Day&amp;explanation=Okmulgee Public Schools County Professional Day.&amp;dateString=2-1-2013">City Public Schools County Professional Day</a></p>
Run Code Online (Sandbox Code Playgroud)

为什么这个JavaScript/jQuery工作......:

$(".ELP").click(function (){
        var stringDate = $(this).text().substring(0, 8)
        console.log(stringDate)
    });
Run Code Online (Sandbox Code Playgroud)

Console.log生成:2013年2月1日

...而这个JavaScript/jQuery没有?

$(".ELLink").click(function (){
        var stringDate = $(this).parentNode.text().substring(0, 8)
        console.log(stringDate)
    });
Run Code Online (Sandbox Code Playgroud)

由于JavaScript错误,Console.log不产生任何内容:未捕获的TypeError:无法调用未定义的方法"text"

很明显,我可以看到它不是"获得"正确的元素,但为什么呢?不是'a'元素的第一个父节点'p'元素?据我所知,没有(至少没有跨浏览器/平台兼容)的有效css选择器用于元素的直接父节点,或者我只会使用它.

我没看到什么?

html javascript jquery click

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

自定义替换json编码不按预期输出双引号

在我创建了自己的json编码器之后,我意识到它正在用两个转义反斜杠替换双引号而不是一个.

我意识到,现在,C#有一个内置Json.Encode()方法,是的,我已经让它工作了,但是,我感到困惑的是为什么下面的代码(我建立的json编码器)没有像我那样替换引号期望.

这是我的json编码器方法:

public static string jsonEncode(string val)
{
    val = val.Replace("\r\n", " ")
             .Replace("\r", " ")
             .Replace("\n", " ")
             .Replace("\"", "\\\"")
             .Replace("\\", "\\\\");

    return val;
}
Run Code Online (Sandbox Code Playgroud)

替换呼叫:Replace("\"", "\\\"")被替换"\\",这当然产生无效JSON,因为它看到两个反斜杠(一个作为转义字符,很象上述C#)作为JSON文件中的单个"真正的"反斜线,因此不逸出如预期的那样双引号.Replace("\\", "\\\\")然而,该调用完美地工作(即,它将两个反斜杠替换为两个,如我所料).

根据我的观点,我很容易告诉Replace方法没有执行函数,就像我期望的那样.我的问题是为什么?我知道我不能使用,Replace("\"", "\\"")因为反斜杠也是C#的转义字符,所以它会产生语法错误.使用Replace("\"", "\"")也是愚蠢的,因为它会用双引号替换双引号.

为了更好地理解C#中的替换方法,我很想知道为什么Replace方法的行为与我期望的不同.如何Json.Encode实现这种级别的编码?

c# json encode escaping

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

为什么"垂直对齐中间"不能与此表格单元一起使用?

我正在开始一个新项目,之前我在<td>单元格中有垂直对齐的内容,所以这个错误有点出乎意料.此外,我所做的任何研究(我之前也做过)都会产生我期望的信息(不能应用于vertical-align块元素,应用display: table-cell;等).然而:

我的简单html文档中有以下表格:

<table id="headingTable">
    <tr>
        <td id="dateHolder">2013-07-24 15:03:18</td>
        <td><h2>City of Okmulgee Authorized Leave Request</h2></td>
        <td><button type="button" class="printBtn">Print Form</button></td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

使用此适用的CSS:

table#headingTable
{
    width: 100%;
}

td
{
    vertical-align: middle;
}

h2
{
    font-family: Tahoma, Geneva, sans-serif;
    text-align: center;
}

.printBtn
{
    white-space: nowrap;
    font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
    font-size: 1em;
    border-width: 3px;
    border-color: #959595;
    cursor: pointer;
}

#dateHolder
{
    float: left;
}
Run Code Online (Sandbox Code Playgroud)

<td id="dateHolder">电池显示在中间的日期和时间,连下两个表细胞该行排列,但你可以在这里看到,它不会:

在此输入图像描述

我想这个问题在我身下,但显然不是,因为我被引导相信只要它是一个内联元素,或者至少是一个元素display: …

html css

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

有没有办法在Sql Server CE中将'datetime'格式转换为'timestamp'?

我知道有一种方法可以在常规的Sql Server中执行此操作,如果我没有弄错,它看起来像这样:

SELECT UNIX_TIMESTAMP(ba_trans_entered) * 1000 AS 'dateUTC'
Run Code Online (Sandbox Code Playgroud)

然而,我承认,我没有得到这个* 1000部分,但这不是重点.

当我尝试在SQL Server CE中执行此查询时,它只是告诉我(即,WebMatrix告诉我):

'UNIX_TIMESTAMP' is not a recognized built-in function name.
Run Code Online (Sandbox Code Playgroud)

我假设UNIX_TIMESTAMPSql Server Compact不支持.

此外,我尝试使用Google搜索并在SE上搜索,但没有与SQL Server CE相关的数据显示,因此在给定的环境中可能没有办法.

有没有办法将'datetime'(例如:)转换7/13/2007 12:00:00 AM为时间戳(例如:) 1184302800000?我知道我可以在JavaScript中执行此操作,但我被告知在查询本身中执行此操作可能会更快,因为我正在提取大量数据...

sql datetime timestamp sql-server-ce webmatrix

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

为什么我的jquery输入掩码不起作用?

我正在尝试使用jQuery输入掩码插件(jquery.maskedinput-1.3.min.js),我搜索了几个示例/解决方案,我的代码与其他工作示例完全相同,但它根本就不会为我工作.请记住,我的代码目前仅测试此插件(尝试使其工作,这将解释为什么我尝试将日期输入掩码应用于名称字段)我的代码如下:

HTML

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Persons of Interest</title>
    <link rel="stylesheet" type="text/css" href="/Default_Styler.css" />
    <link rel="shortcut icon" href="/person.ico" type="image/x-icon" />
    <script src="/Scripts/jquery.1.7.2.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script>
    <script src="/Scripts/FormHandler.js" type="text/javascript"></script>
</head>
<body>
    <div id="WrapperDiv">
        <div id="TitleBar">    <!--Beginning of Title Bar-->
            <div style="padding-top: 30px; text-align: center;">Persons of Interest</div>
        </div>                 <!--End of Title Bar-->
        <div id="FormHolder">
            <form action="">
                <p><label>POI Name: </label><input type="text" id="POI Name" name="POI Name" value=""/></p>
            </form>
        </div>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

jQuery(function ($) {
    $("#POI Name").mask("99/99/9999");
}); …
Run Code Online (Sandbox Code Playgroud)

forms jquery input mask

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

常规按钮元素提交表单,这怎么可能?

可能重复:
Javascript 添加删除行发送表单而不是添加行

我有一个包含两种形式的页面。

一种形式只有一个隐藏的输入元素,用于帮助连接查询字符串。

在另一个表单中,我有一个简单的按钮元素(不是输入类型提交按钮),想法是提交另一个表单 onclick(使用 JavaScript)。按钮就是这种形式。

就目前而言(出于测试目的),我目前所做的只是调用一个名为 changeSpec() 的 JavaScript 函数,其中绝对唯一的一行代码是一个警告框,它显示了隐藏输入元素的值。

按钮:

<td class="entry" colspan="3"><button onclick="changeSpec()">Change Species</button></td>
Run Code Online (Sandbox Code Playgroud)

带有隐藏输入元素的表单:

<form id="specChange" action="" method="get"><input id="hiddenSpec" type="hidden" value='@oppSpec' /></form>
Run Code Online (Sandbox Code Playgroud)

JavaScript 函数:

function changeSpec() 
{
    alert($("#hiddenSpec").val());
}
Run Code Online (Sandbox Code Playgroud)

当我单击普通按钮元素时,出现服务器端错误 (YSOD)...我的意思是,哇,没看到,哈哈。

我得到的错误与此无关,因为它是查询字符串中的一些强制转换错误,我仍然需要解决(此时,只要提交大表单 [不是上面显示的那个],就会发生这种 YSOD)。另外这个 YSOD 是运行时错误,而不是编译器错误,因为页面加载没有问题,直到它认为它已提交,并且随后执行 IsPost 分支。

无论如何,我可以以某种方式告诉(即使我设置 onclick=""),这个位于大表单中的按钮实际上是在尝试提交表单?

我之前不仅在其他表单中使用过常规按钮元素,而且一直认为常规按钮永远不会提交表单,我还多次清除缓存,只是为了确保没有任何愚蠢的(在那个级别)发生. 无论如何,似乎我需要接受有关 html 表单如何解释普通按钮元素的教育。

请帮忙,我在这里真的很茫然。这怎么可能?

谢谢,如果需要更多代码,请告诉我。

html javascript c# forms webmatrix

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

WinForm底部保证金属性不做任何事情

我是WinForms的新手,我很习惯在CSS中设置样式,所以也许我没有正确地看WinForm的Bottom Margin属性,但是,无论我设置了一个任意大的底边距数字,它似乎都有根本没有效果.

我想要的是将窗体的设计扩展到初始可视窗口下方(垂直滚动条显示就好了),并为这些元素设置一个底边距,以便元素的底部不会与窗户的最底部(一个小空间会很好).

我已经在几个元素上尝试了这个,只是为了看看它是否只是一个元素(或者它是在窗口的初始可见部分之外的事实)给我带来了问题,但我似乎无法获得任何效果超出保证金属性.

看这里:http: //msdn.microsoft.com/en-us/library/ms229627.aspx 看来这确实是保证金属性应该做的事情.此外,我无法在任何元素的GUI控件中找到任何填充.

就目前而言,我主要只为事件处理程序编写C#,直到我更好地掌握Visual Studio将所有内容放在两个部分类(以及其他.cs文件)中的位置.

如果有帮助,这里是设计器文件的代码:

namespace WindowsFormsApplication1
{
    partial class IntroForm
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2010 winforms

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

Path.GetFileName有多简单?

在C#.net中如果我要写这个方法:

public static string returnFileNameOnly(string returnString)
{
    string val = returnString.Substring(returnString.LastIndexOf("/"));

    return val;
}
Run Code Online (Sandbox Code Playgroud)

我几乎只是重写了Path.GetFileName吗?或者还有更多呢?据我所知,Path.GetFileName(fileVariable.FileName)fileVariable.FileName除非用户使用Internet Explorer返回相同的事情(虽然我只试了一下IE,Chrome和火狐).

不确定那个方法是否就是那个方法,真的.

----------------对于那些好奇的人-----------------------

我问,因为在我学习这个Path.GetFileName方法之前,我已经使用过与我上面在网站上所写的方法非常相似的东西,而且我不确定是否应该费心去改变它.

c# asp.net webmatrix asp.net-webpages

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

我应该如何处理表单中的单引号以帮助防止SQL注入,使用WebMatrix razor(C#)

目前我根本不允许使用撇号(以及你可以看到的其他角色),对每个字段重复:

foreach(char c in Comments)
    {
        if(c=='\'' || c=='$' || c=='\"' || c=='&' || c=='%' || c=='@' || c=='-' || c=='<' || c=='>')
        {
            errorMessage = "You have entered at least one invalid character in the \"Comments\" field. Invalid characters are: [\'], [\"], [&], [$], [@], [-], [<], [>], and [%]";
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经编写了一段时间,我正在变得更好,但真正的问题是,虽然我确信有一种方法可以有效地"剥离"或以其他方式验证用户输入,但我不确定方法是最好的,可能直到安全危机迫在眉睫.

如果必须的话,我会决定永远不会允许单引号进入表格(就像现在一样),但是这可能会加剧任何名字的人... Bill O'Reilly的名字字段等等.

可能还有其他(我不知道该怎么称呼它们,'插件?''在程序之外?')可以为我做这个工作,但这实际上是无用的,因为我不仅不知道如何为了整合它,我不知道如何专门定制它到我的Web界面/数据库.

是否有任何代码可以帮助我从正常的撇号中检测sql注入撇号(通过它周围的字符?)?请记住,我的一些字段最多可容纳500个字符(textareas),最多可容纳1,000个字符.

感谢您的任何想法或帮助!

c# sql sql-injection webmatrix razor

1
推荐指数
1
解决办法
294
查看次数