gpt4 book ai didi

javascript - 使用隐藏输入字段替换数据库中的条目 - Entity Framework

转载 作者:行者123 更新时间:2023-12-03 09:36:18 24 4
gpt4 key购买 nike

我有一个按钮下拉列表,每行显示一个人的姓名及其城市,这是从数据库中读取的。

enter image description here

这样做的目的是让用户单击下拉列表中的某个项目,然后将数据库中的用户名替换为自己的用户名,但仅限于该行。

我觉得代码是正确的,但是当我点击用户名时没有任何反应,所以肯定有什么问题或丢失。

现在,我已经尝试了两种方法(因为我不确定对于这种情况什么是正确的),但它们都失败了。

尝试1:

View 中的代码:

        using (Html.BeginForm("OverrideLock", "Branch", FormMethod.Post))
{
<div class="btn-group">
<button type="button" id="overrideLock" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Override <span class="caret"></span>
</button>
<ul class="dropdown-menu">
@foreach (var person in Model.Where(person => person.userName != null))
{
<li class="overrideListItem">
<input type="hidden" name="personUsername" value="@person.userName"/>
<input type="hidden" name="personCity" value="@person.city"/>
<a>@person.city <span class="personToOverride"><b>@person.userName</b></span></a>
</li>
}
</ul>
</div>
}

Controller 代码:

   [HttpPost]
public ActionResult OverrideLock(string personUsername, string personCity)
{
var context = new PortalEntities();
var personToRemove = context.LockBranches.Where(p => p.userName == personUsername && personCity == p.Branch.city);
var currentUser = HttpContext.User.Identity.Name;
foreach (var person in personToRemove)
{
context.Entry(person).CurrentValues.SetValues(currentUser);
}

//context.LockBranches.Remove(personToRemove.FirstOrDefault());
context.SaveChanges();
return RedirectToAction("Index");
}

尝试2:

查看代码:

        <div class="btn-group">
<button type="button" id="overrideLock" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Override <span class="caret"></span>
</button>
<ul class="dropdown-menu">
@foreach (var person in Model.Where(person => person.userName != null))
{
<li class="overrideListItem">
<input type="hidden" name="personUsername" value="@person.userName"/>
<input type="hidden" name="personCity" value="@person.city"/>
<a>@person.city <span class="personToOverride"><b>@person.userName</b></span></a>
</li>
}
</ul>
</div>

Controller 代码:

        public void OverrideLock(string personUsername, string personCity)
{
var context = new PortalEntities();
var personToRemove = context.LockBranches.Where(p => p.userName == personUsername && personCity == p.Branch.city);
var currentUser = HttpContext.User.Identity.Name;
foreach (var person in personToRemove)
{
context.Entry(person).CurrentValues.SetValues(currentUser);
}

//context.LockBranches.Remove(personToRemove.FirstOrDefault());
context.SaveChanges();
}

无论如何,什么都没有发生。

感谢您的帮助!如果我可以添加任何其他信息,请告诉我。

最佳答案

忘记我上次的回答。你会使用jquery吗?

试试这个(使用jquery):

@using (Html.BeginForm("OverrideLock", "Branch", FormMethod.Post, new { id = "override-form" }))
{
<div class="btn-group">
<button type="button" id="overrideLock" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Override <span class="caret"></span>
</button>
<ul class="dropdown-menu">
@foreach (var person in Model.Where(person => person.userName != null))
{
<li class="overrideListItem" data-username="@person.userName" data-city="@person.city">
<a>@person.city <span class="personToOverride"><b>@person.userName</b></span></a>
</li>
}
</ul>

<input type="hidden" name="personUsername" value="" />
<input type="hidden" name="personCity" value="" />

<script>
$(function () {

$(".overrideListItem").click(function () {

var userName = $(this).attr("data-username");
var city = $(this).attr("data-city");

$("input[name='personUsername']").val(userName);
$("input[name='personCity']").val(city);
$("#override-form").submit();

});
});
</script>
</div>
}

关于javascript - 使用隐藏输入字段替换数据库中的条目 - Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com