auszuwählen Kürzlich habe ich versucht, das TryUpdateModel verwenden, um den Wert des Steuerelements in einem Formular zu erhalten, aber das Problem ist, dass ich die MasterPage in meinem asp.net verwenden Ich habe festgestellt, dass ich zwar "ClinetIDMode" auf "Static" setzen kann, um sicherzustellen, dass die Steuerelement-ID nicht zu "MainContent_USER_NAME" wird. Aber FormValueProvider stimmt mit dem Steuerelementnamen und nicht mit der ID überein, und ein solches "ClientNameMode" -Attribut kann nicht vorhanden sein auf "Static" gesetzt sein, so dass der Name des Steuerelements nur etwas wie "ctl00 $ MainContent $ USER_NAME" sein kann. ? Wie dieses Problem lösen Bitte helfen me.and meine aspx und cs-Datei:Wie TryUpdateModel verwenden, um Formularwerte in asp.net-Website mit MasterPage
Test.aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<div>
UserName:<asp:TextBox ID="USER_NAME" runat="server" ></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Add a user" OnClick="Button1_Click" />
</div>
</asp:Content>
Test.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.ModelBinding;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Entities db = new Entities();
USER_INFO u = new USER_INFO();
IValueProvider p = new FormValueProvider(ModelBindingExecutionContext);
if (TryUpdateModel(u, p))
{
String name = u.USER_NAME;//can't pick the value
db.USER_INFO.Add(u);
db.SaveChanges();
}
else
{
//do nothing.
}
}
}
Was ist, wenn Sie den Namen = "USER_NAME" für Ihr Textfeld festlegen? –
Ja, ich habe das versucht. Die name -Eigenschaft des Eingabesteuerelements ist immer noch etwas wie ctl00 $ MainContent $ USER_NAME .. –