我正在为搜索结果页面编写代码,需要突出显示搜索字词.这些术语碰巧发生在表格单元格中(应用程序正在迭代GridView行单元格),这些表格单元格可能包含HTML.
目前,我的代码看起来像这样(相关的帅哥如下所示):
const string highlightPattern = @"<span class=""Highlight"">$0</span>";
DataBoundLiteralControl litCustomerComments = (DataBoundLiteralControl)e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Controls[0];
// Turn "term1 term2" into "(term1|term2)"
string spaceDelimited = txtTextFilter.Text.Trim();
string pipeDelimited = string.Join("|", spaceDelimited.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries));
string searchPattern = "(" + pipeDelimited + ")";
// Highlight search terms in Customer - Comments column
e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Text = Regex.Replace(litCustomerComments.Text, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是它有效.但是,有时我匹配的文本是HTML,如下所示:
<span class="CustomerName">Fred</span> was a classy individual.
Run Code Online (Sandbox Code Playgroud)
如果你搜索"类"我希望突出显示代码将"class"包装在"classy"中,但当然不是HTML属性"class"恰好在那里!如果您搜索"Fred",则应突出显示.
那么什么是一个好的正则表达式,以确保匹配只发生在html标签之外?它不一定是超级铁杆.我认为,只需确保匹配不在<和>之间就行了.
我有一个 ASP.NET MVC 应用程序,其路由允许用户请求存储在 Web 应用程序目录之外的文件。
我将通过告诉您最终将它们限制在他们具有完全访问权限的安全目录中来简化该场景。
例如:
如果用户(ID为100)请求:
http://mysite.com/Read/Image/Cool.png
Run Code Online (Sandbox Code Playgroud)
然后我的应用程序会将“Cool.png”附加到“C:\ImageRepository\Users\100\”并将这些字节写入响应。工作进程可以访问此路径,但匿名用户则不能。我已经有这个工作了。
但某些恶意用户是否能够请求以下内容:
http://mysite.com/Read/Image/..\101\Cool.png
Run Code Online (Sandbox Code Playgroud)
并决心
"C:\ImageRepository\Customers\101\Cool.png"
Run Code Online (Sandbox Code Playgroud)
(其他用户的图像?!)
或类似的东西?有没有办法确保路径是干净的,以便用户被限制在他们自己的目录中?
我正在将一些我无法控制的XML转换为XHTML.XML模式定义了一个<para>段落,并标记<unordered-list>和<ordered-list>对列表.
经常在这个XML中,我发现嵌套在段落中的列表.因此,直接转换会导致<ul>s嵌套在<p>s中,这在XHTML中是非法的.
我已经创建了一个处理它的方法列表,这是最明显的:
<para>标签在无序列表开始之前关闭,然后重新打开.(我最喜欢这个选项,但由于嵌套的级别很复杂,我们可能没有预算)<para>到<div>并设置了div的边缘,所以它看起来像在浏览器中的一个段落.这是发布有效XHTML的最简单的解决方案,但它取自标记的语义值.我的问题是:
我怎么能找到这个?
我有一个看起来像这样的区类:
public class District
{
public int Id { get; set; }
public string Name { get; set; }
public District Parent { get; set; }
public IEnumerable<District> Ancestors { get { /* what goes here? */ } }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够得到每个区的祖先名单.因此,如果区"1.1.1"是区域"1.1"的子区域,这是区域"1"的子区域,则获得区域"1.1.1"上的祖先将返回包含名称为"1.1"的区域对象的列表. "和"1".
这是否涉及收益率报表(我从未完全理解)?可以一行完成吗?
这段代码:
<%: Html.TextBoxFor(model => model.DonationMessage) %>
Run Code Online (Sandbox Code Playgroud)
呈现input type=text标记,但我想要一个textarea.我在我的实体中试过这个,但它没有什么区别:
[DataType(DataType.MultilineText)]
public string DonationMessage { get; set; }
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我正在浏览一个旧的ASP.NET应用程序并关闭ViewState for Gridviews,而不需要它.这减少了回发时发送到服务器的信息量,但我很好奇.
在FireBug中,我可以转到"网络"选项卡,应用HTML过滤器,然后展开已发布的特定aspx文件.在其下方,我可以点击"发布"标签,其中显示的其中一个值是帖子的内容长度.(我有一些页面在回发时上传了4兆... YIKES!).
有谁知道如何在Chrome开发者工具中看到这个价值?
我正在使用一个应该返回一个对象的 API,例如
{
"some_object": {
"some_field": "some value"
}
}
Run Code Online (Sandbox Code Playgroud)
当该对象为空时,我期望
{
"some_object": null
}
Run Code Online (Sandbox Code Playgroud)
或者
{
"some_object": {}
}
Run Code Online (Sandbox Code Playgroud)
但他们发给我的是
{
"some_object": []
}
Run Code Online (Sandbox Code Playgroud)
...即使它从来不是一个数组。
使用时
JsonSerializer.Deserialize<MyObject>(myJson, myOptions)
Run Code Online (Sandbox Code Playgroud)
[]当出现在预期的位置时会引发异常null。
我可以选择性地忽略这个异常吗?
我当前处理此问题的方法是读取 json 并在反序列化之前使用正则表达式修复它。
如果可能的话,我更喜欢使用System.Text.Json,而不引入其他依赖项。
使用 Azure 门户中应用服务页面导航上的部署中心链接,我能够找到我的 FTP 凭据并使用它们轻松登录。但是,wwwroot 文件夹中除了hostingstart.html 之外没有任何文件。
但是,当我使用 Azure 控制台时,我的所有文件都出现在 wwwroot 文件夹中,而 Hostingstart.html 文件不在那里。
我不确定它是否相关,但我们确实有持续集成设置。我只是希望能够查看这些文件并与它们交互。
如果我浏览到 /LogFiles 文件夹,我可以确认 FTP 和 Azure 命令行显示相同的文件。所以我知道我在正确的服务器上。
我正在使用C#,但我认为这是一个非常通用的OO问题.假设我有一个名为Animal的类,它具有LegCount,EyeCount,HasFur,EatsMeat等属性.
假设我有一个a动物实例.假设aLegCount设置为4,EyeCount设置为2.
现在,我想创建一个d类型为Dog 的实例,它继承自Animal.我想初始化d所有的值a.我意识到我可以创建一个构造函数或其他一些方法来接受一个Animal并吐出一个新的Dog并复制所有值,但我希望有一些面向对象的原则/技巧让我了解.
用简单的英语我想做的是:
创建新d的Dog of Instance ,其中包含所有起始值a.关键是"全部",而不是单独指定每个属性.
当您设计一个继承自其他类的类时,您不需要列出它继承的所有成员.它只是继承了所有这些.所以我想知道我是否可以在实际实例上"继承值".
我有这个Customer类:
export class Customer {
id: number;
company: string;
firstName: string;
lastName: string;
name(): string {
if (this.company)
return this.company;
if (this.lastName && this.firstName)
return this.lastName + ", " + this.firstName;
if (this.lastName)
return this.lastName;
if (this.firstName)
return this.firstName;
if (this.id > 0)
return "#" + this.id;
return "New Customer";
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我下载了一个客户列表:
export class CustomersController {
static $inject = ["customerService", "workflowService"];
ready: boolean;
customers: Array<Customer>;
constructor(customerService: CustomerService, workflowService: WorkflowService) {
customerService.getAll().then(
(response) => {
this.customers = response.data;
this.ready = …Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net ×2
asp.net-core ×1
asp.net-mvc ×1
azure ×1
firebug ×1
ftp ×1
html ×1
javascript ×1
json ×1
linq ×1
oop ×1
regex ×1
typescript ×1
xhtml ×1