我有一个令人尴尬的失控问题。
我正在使用 MVC 和 EF,并且有一个用户可以编辑的模型。我刚刚有一个新的要求,如果它被编辑,被编辑的属性应该在视图中显示为红色,以供其他用户查看。
我的模型有很多属性,但是主键是a GUID
,模型可以有多个parentID
s。因此,对于一个给定的GUID
,ParentID
我想找出哪些属性已更改。
到目前为止,感觉不对,我认为我有一些 jquery 可以执行以下操作
$("[name*='Request.']")
.not(":hidden")
.each(function () {
var $this = $(this);
$.ajax({
url: '@Url.Action("IsChanged", "Shared")',
data: { fieldName: $this.attr("name"), parentID: @Model.Request.ID },
success: function (data) {
if (data) {
if ($this.is(":radio")) {
$this.parent().addClass("isChanged");
} else
$this.addClass("isChanged");
}
}
});
});
如果我尝试简单地从我的 ajax 函数返回 true,则此脚本工作正常。但是,问题出在 ajax 函数上。如何找到更改?到目前为止,我得到的是:
public ActionResult IsChanged(string fieldName, int parentID)
{
using (MyEntities _db = new MyEntities())
{
string[] aName = fieldName.Split('.');
// Count the number of version
int versionCount = _db.SubRequests.Count(r => r.ParentID == parentID);
// Get the first version
SubRequest sr = _db.SubRequests.FirstOrDefault(r => r.ParentID == parentID);
// Check if the count is the same for the specific value
int changeCount = _db.ExecuteStoreQuery<int>("select count(parentID) from "+aName[0]+" where parentID = " + parentID + " and " + aName[1] +"='{0}'", THEVALUEINORIGINAL);
bool isChanged = changeCount == versionCount;
return Json(isChanged, JsonRequestBehavior.AllowGet);
}
}
到目前为止我所做的感觉不对,显然这不起作用,但我迷路了。
让我知道这是否可以理解,或者您是否需要更多信息。我应该放弃这个想法并构建一些完全不同的东西(可能),还是有办法拯救我?