我正在开发一个基于本教程的简单.NET Core Razer项目: https://docs.microsoft.com/en-us/aspnet/core/data/
我创建了2个与一对多关系相关的模型,就像标题细节一样。我得到了标题,点击后查看了它的所有细节。我希望每个细节行都有一个按钮,按顺序将它按1或1向下。我在Index.cshtml.cs中创建了一个方法,但是现在我需要从Index.cshtml运行这个方法。我试过这样的事情:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function RuleStepMoveUp() {
var RSO = '@Model.RuleStepMoveUp()';
alert(RSO);
}
</script>
并且有一个按钮来执行它:
<td>
<input type="button" onclick="RuleStepMoveUp()" value="Get Message" />
<p></p>
</td>
每个细节,但它不起作用。每次加载页面时都会执行RuleStepMoveUp()方法,并且页面因错误而失败:
NullReferenceException:未将对象引用设置为的实例 宾语。 WZI_Konfigurator.Pages.Rules.Index_Page + d__15.MoveNext() 在Index.cshtml中 + 28. @foreach(Model.Rule.Rules中的var项目)
@foreach (var item in Model.Rule.Rules)
{
string selectedRow = "";
if (item.RuleID == Model.ID)
{
selectedRow = "success";
}
<tr class="@selectedRow">
<td>
@Html.DisplayFor(modelItem => item.RuleName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Stage)
</td>
<td>
@Html.DisplayFor(modelItem => item.ResultColumn)
</td>
<td>
<a asp-page="./Index" asp-route-id="@item.RuleID">Select</a> |
<a asp-page="./Edit" asp-route-id="@item.RuleID">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.RuleID">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.RuleID">Delete</a>
</td>
</tr>
}
即使在JS脚本不存在时加载也很好。
现在C#方法对一个硬编码的详细实体进行更新,以确保它正常工作。将来我会在RuleStepMoveUp方法中传递detailID,这就是没有参数的原因。
That's how the page looks after I deleted the JS function
那么,我应该如何处理这个问题,只有当&#34; Get Message&#34;单击按钮?此外,是否有一种非常流畅的方法来更新规则步骤的表而不刷新页面?