0
最近、私はTryUpdateModelを使用してフォームのコントロールの値を取得しようとしましたが、私は、コントロールIDがMainContent_USER_NAMEになることはないことを確かめるために "ClinetIDMode"をStaticに設定することはできますが、私はFormValueProviderがidではなくコントロールの名前と一致していることを発見しました。静的に設定すると、コントロールの名前は "ctl00 $ MainContent $ USER_NAME"のようなものに過ぎません。 どのようにこの問題を解決するために私のaspxとCSファイルme.Andを助けてください?TryUpdateModelを使用して、マスターページを使用してasp.net Webサイトでフォーム値を選択する方法
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.
}
}
}
テキストボックスに「USER_NAME」という名前を設定するとどうなりますか? –
はい、私はこの試みました。入力コントロールのnameプロパティは、ctl00 $ MainContent $ USER_NAMEのようなものです。 –