我最近开始玩ASP.net MVC(4),但我无法解决我遇到的这个问题.我相信你知道它很容易.
我基本上试图在我的索引视图中执行以下操作:
所以我想我需要一个局部视图,并且我创建了如下(_CreateNote.cshtml):
@model QuickNotes.Models.Note
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Note</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Content)
@Html.ValidationMessageFor(model => model.Content)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
在我原来的索引视图(Index.cshtml)中,我正在尝试渲染此局部视图:
@model IEnumerable<QuickNotes.Models.Note>
@{
ViewBag.Title = "Personal notes";
}
<h2>Personal notes</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Content)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Content)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID …Run Code Online (Sandbox Code Playgroud) 我试图将每个帖子的用户限制在5到1024个字符之间.
我们目前正在使用asp.net RegularExpressionValidator.
如果我将表达式设置为以下内容,这有点起作用:
body.ValidationExpression = string.Format("^[\\s\\S]{{{0},{1}}}$",
MinimumBodyLength,
MaximumBodyLength);
Run Code Online (Sandbox Code Playgroud)
但是,这不会考虑NewLines和前导/尾随/多个空格.因此用户可以键入以下内容:Ok (三个空格).(点),它仍然会被验证,因为三个空格计为字符.换行也是如此.我们也可以输入一个.(点)后跟5个空格/换行符.
我尝试过在网络上找到的多个正则表达式变体,但似乎没有一个完全符合我的需求.我希望他们输入最少5个字符,最多3000个字符,但我并不关心他们使用多少个newLines和空格.
要清除,我希望人们能够输入:
Hi,
My name is ben
Run Code Online (Sandbox Code Playgroud)
我不希望他们能够输入:
Hi .
Run Code Online (Sandbox Code Playgroud)
要么
A B
Run Code Online (Sandbox Code Playgroud)
(很多换行符或空格)
正则表达式可能不是最佳选择?如果是这样,我如何在正则表达式求值之前搜索和替换字符串(同时仍然使用旧表达式在验证器中捕获它)?