Jquery 在控制器中调用了两次操作方法
MVC控制器中的操作被jQuery代码调用了两次。在做了一些调查之后,我发现这个链接是由jQuery和MVC视图触发的Jquery 在控制器中调用了两次操作方法,jquery,asp.net-mvc,views,controllers,Jquery,Asp.net Mvc,Views,Controllers,MVC控制器中的操作被jQuery代码调用了两次。在做了一些调查之后,我发现这个链接是由jQuery和MVC视图触发的 $('.treeview-menu li a[name="environments"]').on("click", function () { debugger; var genericId = $(this).attr('id'); if (genericId != undefined) { $.ajax({ t
$('.treeview-menu li a[name="environments"]').on("click", function () {
debugger;
var genericId = $(this).attr('id');
if (genericId != undefined) {
$.ajax({
type: "GET",
url: "/Configuration/Development",
data: { 'genericId': genericId } ,
datatype: "application/json",
success: function (data) { }
})
}
else {
return;
}
});
[HttpGet]
公共操作结果开发(DashBoardViewModel模型,字符串genericId)
{
ViewBag.EnvironmentType=“开发”;
DeploymentConfiguration_DAL_deploymentDal=新的DeploymentConfiguration_DAL();
model.Configuration=_deploymentDal.FetchDeploymentConfigurationByEnvironmentID(Convert.ToInt32(Convert.ToInt32(genericId));
if(model.Configuration!=null)
{
返回视图(“索引”,模型);
}
返回视图(“索引”);
}
查看正在填充链接的位置
<li>
<a href="#"><i class="fa fa-circle-o"></i> Deployment Environment</a>
<ul class="treeview-menu">
@foreach (var item in ViewBag.Environments)
{
<li>
<a href="@Url.Action(@item.Name,"Configuration")" id="@item.GenericMasterId" name="environments">
<i class="fa fa-circle-o"></i>
@item.Name
</a>
</li>
}
</ul>
</li>
@foreach(ViewBag.Environments中的变量项)
{
-
}
我面临的问题是当应用程序运行时以及单击任何动态生成的链接后。action方法第一次运行并填充我的模型,但是没有在我的视图中显示它,而是再次点击action方法,从而填充模型中的null
,因为文本框没有与db值绑定
请帮我解决这个问题。是否有一种方法可以在不使用jQuery的情况下访问操作结果中
href
的id
值 尝试替换href=“#”的@Url.Action(@item.Name,“配置”)
<a href="#" id="@item.GenericMasterId" name="environments">
这就是为什么您有两个对控制器的调用,一个在jquery中单击,另一个在单击链接时调用。如您在问题中所述,发生的情况是:
- jquery运行良好(但您的问题代码与视图无关)
- href上的链接将页面重定向到新视图
- 将
更改为a
按钮类型=按钮
- 从事件处理程序返回false
- 从事件处理程序调用event.preventDefault()
- 删除
(通过更改为按钮)href=
- 根据其他答案,可能会更改为
,但建议不要这样做,如果没有上述更改,也会产生其他副作用#
@Url.Action
以使用RouteValue重载:
<a href='@Url.Action(item.Name, "Configuration", new { genericId = item.GenericMasterId })' ... />
您可以扩展
新的{genericId=
以包含您需要的其他模型属性(尽管对您的操作进行一些更改后,id应该足够了)。您可以为显示html
吗?treeview菜单包含[name=“environments”]
元素吗?听起来您有两个a[name=“environments”]
元素。它们是否嵌套?添加了我正在使用的视图