MVC + ADO.NET实体框架+ jQuery的问题 [英] Problem with MVC + ADO.NET Entity Framework + jQuery

查看:65
本文介绍了MVC + ADO.NET实体框架+ jQuery的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题

logements indexpage的目的是用户必须能够通过输入文本框,更改文本框并离开文本框来更改值。 br />
数据库值完全改变。

但是当我转到另一个页面并返回索引页面时,webgrid 一直显示旧值

刷新索引页面时会显示新值。



尝试

ModelState.Clear()强制webgrid从数据库中获取新值。

myObjectContext.Refresh( ...)用数据库值更新模型。



当我转到另一页时,清除缓存并取回它还显示了新值

所以现在我想我必须通过LogementsController清除索引View的特定缓存。



Model Logement



Problem
The purpose of the logements indexpage is that the user must be able to change the value by simply enter the textbox, change it and leave the textbox.
The database value changes perfectly.
But the webgrid keeps showing the old value when I go to another page and get back to the index page
When I refresh the indexpage it shows the new value.

Tried
ModelState.Clear() to force the webgrid to pick up the new value from the database.
myObjectContext.Refresh(...) to update the model with the database values.

When I go to another page, clear the cache and get back it also shows the new value
so now I think I must clear the specific cache for the index View via LogementsController.

Model Logement

public long LogementID { get; set; }
public string Naam { get; set; }
public string Omschrijving { get; set; }
public Nullable<decimal> PrijsPerNacht { get; set; }
public Nullable<System.DateTime> StartDatum { get; set; }
public Nullable<System.DateTime> EindDatum { get; set; }





LogementsController





LogementsController

public JsonResult ChangeLogement(CustomObject obj)
{
        Logement oLogement = db.Logement.SingleOrDefault<Logement>(o => o.LogementID              == obj.ID);

        var oConverter =   TypeDescriptor.GetConverter(oLogement.GetType().GetProperty(obj.Property).PropertyType);

                oLogement.GetType().GetProperty(obj.Property).SetValue(oLogement, oConverter.ConvertFrom(obj.Value));

    db.SaveChanges();

    string message = "Success";

    return Json(message, JsonRequestBehavior.AllowGet);
}





索引



Index

$('body').on('mouseout', '.edit-mode', function () {
        var td = $(this).parent();
        var tr = td.parent();

        var sLogementID = tr.find('#txtLogementID').val();

        if (!isNaN(sLogementID)) {
            var sCurrentID = '#' + $(this).attr('id');
            var sProperty = sCurrentID.substr(4);
            var sLabelID = '#' + $(this).prev().children('label').attr('id');

            var sValue = tr.find(sCurrentID).val();
            tr.find(sLabelID).text(sValue);

            var obj =
            {
                "ID": sLogementID,
                "Property": sProperty,
                "Value": sValue
            };

            $.ajax({
                url: '/Logements/ChangeLogement/',
                data: JSON.stringify(obj),
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                success: function () {

                 }
            });

            td.find('.edit-mode, .display-mode').toggle();
      }
    });




$('body').on('mouseleave', 'td', function () {
        var tr = $(this).parent();
        var sLogementID = tr.find('#txtLogementID').val();

        if (!isNaN(sLogementID)) {
           $(this).find('.edit-mode').hide();
           $(this).find('.display-mode').show();
        }
    });




@{
    var oGrid = new WebGrid(Model);
}

<div>
    @oGrid.GetHtml(
    tableStyle: "webgrid-table", headerStyle: "webgrid-header", footerStyle: "webgrid-footer", alternatingRowStyle: "webgrid-alternating-row",
                 selectedRowStyle: "webgrid-selected-row", rowStyle: "webgrid-row-style", mode: WebGridPagerModes.All,

        columns: oGrid.Columns(
        oGrid.Column(null, format: @&lt;input type="text" id="txtLogementID" value="@item.LogementID" />),
            oGrid.Column("clnNaam", "Naam", format: @<text>
            <span class="display-mode">&lt;label id="lblNaam">@item.Naam&lt;/label></span>&lt;input type="text" id="txtNaam" value="@item.Naam" class="edit-mode" /></text>),

        oGrid.Column("clnOmschrijving", "Omschrijving", format: @<text>
            <span class="display-mode">&lt;label id="lblOmschrijving">@item.Omschrijving&lt;/label></span>&lt;input type="text" id="txtOmschrijving" value="@item.Omschrijving" class="edit-mode" /></text>),
        oGrid.Column("clnPrijsPerNacht", "Prijs per nacht", format: @<text>
            <span class="display-mode">&lt;label id="lblPrijsPerNacht">@item.PrijsPerNacht&lt;/label></span>&lt;input type="text" id="txtPrijsPerNacht" value="@item.PrijsPerNacht" class="edit-mode" /></text>),
        oGrid.Column("clnVan", "Van", format: @<text>

            <span class="display-mode">&lt;label id="lblStartDatum">@(item.StartDatum != null ? item.StartDatum.ToShortDateString() : string.Empty)&lt;/label></span>&lt;input type="text" id="txtStartDatum" value="@(item.StartDatum != null ? item.StartDatum.ToShortDateString() : string.Empty)" class="edit-mode" /></text>),
        oGrid.Column("clnTot", "Tot", format: @<text>

            <span class="display-mode">&lt;label id="lblEindDatum">@(item.EindDatum != null ? item.EindDatum.ToShortDateString() : string.Empty)&lt;/label></span>&lt;input type="text" id="txtEindDatum" value="@(item.EindDatum != null ? item.EindDatum.ToShortDateString() : string.Empty)" class="edit-mode" /></text>),

        oGrid.Column("", "", style:"extra-kolom", format: @<text></text>)
         ))
    </div>

推荐答案

('body')。on('mouseout','。editit-mode',function(){
var td =
('body').on('mouseout', '.edit-mode', function () { var td =


(这个).parent();
var tr = td.parent();

var sLogementID = tr.find('#txtLogementID')。val();

if(!isNaN(sLogementID)){
var sCurrentID ='#'+
(this).parent(); var tr = td.parent(); var sLogementID = tr.find('#txtLogementID').val(); if (!isNaN(sLogementID)) { var sCurrentID = '#' +


(this).attr('id');
var sProperty = sCurrentID.substr(4);
var sLabelID ='#'+
(this).attr('id'); var sProperty = sCurrentID.substr(4); var sLabelID = '#' +


这篇关于MVC + ADO.NET实体框架+ jQuery的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆