我试图检查用户是否在一个同类群组中添加重复ID,如果是,我需要在网页上打印一个警告:" ID已存在于同一群组中"并防止用户再次输入现有ID。 现在我在if语句中进行了检查,但我不知道如何在ELSE语句中打印到网页。
以下是我试图在Controller中修改的C#文件中的代码:
foreach (string studentID in cc.students)
{
SqlDataReader rdr = null;
cmd = new SqlCommand(@"select * from CustomCohortStudent where PUID = @StudentID and cohortID = @cohortID", sqlConn);
rdr = cmd.ExecuteReader();
if (rdr == null)
{
cmd = new SqlCommand(@"insert into CustomCohortStudents(cohortID, PUID) values (@id,@StudentID)", sqlConn);
}
else
{
// code to print warning to the webpage
}
而且我不知道如何相应地编辑视图中的cshtml文件。 这是我在index.cshtml文件中的内容:
<h2>Cohorts</h2>
<a href="CustomCohort/Create">Create</a><br /><br />
<table class="table">
<tr>
<!--
<th>
@Html.DisplayNameFor(model => model.id)
</th>
-->
<th>
@Html.DisplayNameFor(model => model.name)
</th>
<th>
<!--Actions-->
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<!--
<td>
@item.id
</td>
-->
<td>
@item.name
</td>
<td>
<a href="CustomCohort/Edit/@item.id">Edit</a> |
<a href="CustomCohort/Delete/@item.id">Delete</a>
</td>
</tr>
}
</table>
所以我的问题是:我应该在Controller中的ELSE语句中添加什么以及在Views中修改什么?
答案 0 :(得分:1)
如果警告是非致命的,即流程应该像一切顺利一样继续,那么你需要从插入代码中返回多个信息:它是否成功以及警告是什么(如果有的话)
这意味着您可能会更好地使用某种Result类:
现在,有很多方法可以做到这一点,这是一个快速编写的方法,希望能让你对我所谈论的内容有所了解。请注意,您可以跳过Result
课程并直接返回List<string>
,但它会隐藏您未来将要阅读此代码的人的实际意图(包括在内)。返回一个具有描述性名称和属性的类意味着只需略过它就可以非常容易地理解代码背后的想法。
如果您希望可以使用它来传输其他信息(有多少成功,或哪一个失败等等),例如在您的视图中显示该信息,那么最大限度地简化了Result类。
public class Result{
public List<string> Warnings {get;} = new List<string>();
}
然后在执行插入的方法中:
public Result MyInsertMethod(...){
var result = new Result();
foreach (string studentID in cc.students)
{
SqlDataReader rdr = null;
cmd = new SqlCommand(@"select * from CustomCohortStudent where PUID = @StudentID and cohortID = @cohortID", sqlConn);
rdr = cmd.ExecuteReader();
if (rdr == null)
{
cmd = new SqlCommand(@"insert into CustomCohortStudents(cohortID, PUID) values (@id,@StudentID)", sqlConn);
}
else
{
// code to print warning to the webpage
result.Warnings.Add("Something was not awesome");
}
}
return result;
}
在控制器中:
ViewBag.Result = MyInsertMethod(...);
在视图中:
<h2>Cohorts</h2>
if(ViewBag.Result != null){
foreach(var warn in ((Result)ViewBag.Result).Warnings){
<span class="warning">@warn</span>
}
}
<a href="CustomCohort/Create">Create</a><br /><br />