我的任务是创建一个应用程序:
是否可以在视图中完全执行此操作?我在该视图中最佳尝试的代码如下。但是,我一直收到以下错误:
编译错误
描述:编译资源期间发生错误 需要为此请求提供服务。请查看以下具体内容 错误详细信息并适当修改源代码。
编译器错误消息:CS1061:'object'不包含定义 对于'包含'并且没有扩展方法'包括'接受第一个 可以找到“对象”类型的参数(你是否错过了使用 指令或程序集引用?)
@model System.Data.DataTable
@using System.Data;
<h2>Upload File</h2>
@using (Html.BeginForm("Upload", "Home", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<div class="form-group">
<input type="file" id="dataFile" name="upload" />
</div>
<div class="form-group">
<input type="submit" value="Upload" class="btn btn-default" />
</div>
if (Model != null)
{
<table>
<thead>
<tr>
@foreach (DataColumn col in Model.Columns)
{
<th>@col.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
var email = row["Email"];
<tr >
@if (email.includes("@")) {
foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
}
</tr>
}
</tbody>
</table>
}
}
答案 0 :(得分:3)
在我看来,限制数据集更多是控制器的责任,而不是视图。
话虽如此,我知道有几种方法可以验证电子邮件地址。第一个是使用System.Net.Mail.MailAddress类构造函数,如果电子邮件地址不是有效格式,则会抛出FormatException
:
string email = row["Email"].ToString();
try {
var address = new MailAddress(email);
// Do something with the valid email address.
}
catch(FormatException ex){
// The email address was invalid.
}
注意:如果您希望许多地址无效,则抛出和捕获异常的开销可能会影响您的性能。
另一种选择是使用Regex.IsMatch(email, someRegexString)
来确定电子邮件是否与某些正则表达式匹配。根据您的电子邮件地址规则的通用或简单程度,您可以通过在线搜索找到someRegexString
可能看起来的一些选项。如果您的规则足够简单,最简单的尝试build your own。
如果查找@
字符的存在就足够了,您可以使用Contains()
:
string email = row["Email"].ToString();
@if (email.Contains("@")) {
<tr>
foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
</tr>
}