【问题标题】:model binding webform TryUpdateModel not Working模型绑定 webform TryUpdateModel 不工作
【发布时间】:2014-02-19 13:15:25
【问题描述】:

我在 webform 中有一个简单的表单视图和简单的模型绑定:

<asp:FormView ID="frm" ItemType="SabaDoor2.Models.Content" SelectMethod="frm_GetItem" UpdateMethod="frm_UpdateItem" DataKeyNames="Id" runat="server">
    <ItemTemplate>
        <fieldset>
            <legend>
                <asp:Label ID="lblName" Text='<%# Item.Name %>' runat="server"></asp:Label>
            </legend>
            <p>
                <label>descripion :</label>
                <asp:Label ID="lblDescription" Text='<%# Item.Description %>' runat="server"></asp:Label>
            </p>
            <p>
                <asp:Button ID="btnEdit" Text="edit"  CommandName="Edit" runat="server" />
            </p>
        </fieldset>
    </ItemTemplate>
    <EditItemTemplate>
        <fieldset>
            <legend>
                <asp:Label ID="lblName" Text='<%# Item.Name %>' runat="server"></asp:Label>
            </legend>
            <p>
                <label>description :</label>
               <asp:TextBox ID="txt" Text='<%# Item.Description %>' runat="server" ></asp:TextBox>
            </p>
            <p>
                <asp:Button CommandName="Update" ValidationGroup="mainPropertyGroup" runat="server" ID="btnUpdate" Text="update" />
                <asp:Button CommandName="Cancel" ValidationGroup="mainPropertyGroup" runat="server" ID="btnCancel" Text="cancel" />
            </p>
        </fieldset>
        <br />
    </EditItemTemplate>
</asp:FormView>

在代码中:

 Models.Model1Container _db = new Models.Model1Container();

    protected void Page_Load(object sender, EventArgs e)
    {
        bindEvents();
        lblResult.ForeColor = System.Drawing.Color.Green;
        lblResult.Text = "";
        if (!IsPostBack)
        {
        }
        else
        {

        }

    }

    private void bindEvents()
    {
       frm.ItemUpdated += frm_ItemUpdated;

    }

    void frm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
    {
        if (e.Exception == null)
        {
            lblResult.ForeColor = System.Drawing.Color.Green;
            lblResult.Text = "done!";
        }
        else
        {
            lblResult.ForeColor = System.Drawing.Color.Red;
            lblResult.Text = "error:" + e.Exception.Message;
            e.KeepInEditMode = true;
        }


    }


    public SabaDoor2.Models.Content frm_GetItem([System.Web.ModelBinding.QueryString("Id")]int? Id)
    {
        return _db.Contents.Find(Id);
    }

    // The id parameter name should match the DataKeyNames value set on the control
    public void frm_UpdateItem(int Id)
    {
        SabaDoor2.Models.Content item = null;
        item = _db.Contents.Find(Id);
        if (item == null)
        {
            // The item wasn't found
            ModelState.AddModelError("", String.Format("Item with id {0} was not found", Id));
            return;
        }
       var result =    TryUpdateModel(item);


        if (ModelState.IsValid)
        {
            _db.SaveChanges();

        }
    }


    public override void Dispose()
    {
        _db.Dispose();
        base.Dispose();
    }

tryUpdateModel 返回 true 但我的模型(描述字段)没有更新 :(

【问题讨论】:

    标签: c# asp.net webforms model-binding formview


    【解决方案1】:

    我发现逻辑错误: 我必须初始化 item.NameBindItem.Name 属性 instd

    Text='<%# BindItem.Description %>' 
    

    【讨论】:

    • 啊啊啊啊,谢谢!没有很多 asp:FormView 与数据绑定的例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多