2017-01-18 15 views
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. 
     } 
    } 
} 
+0

テキストボックスに「USER_NAME」という名前を設定するとどうなりますか? –

+0

はい、私はこの試みました。入力コントロールのnameプロパティは、ctl00 $ MainContent $ USER_NAMEのようなものです。 –

答えて

0

最後に私が見つけましたnameidに設定するための少しのフロントエンドコードを書くことができます。

<script> 
    $("input[type=text]").each(function() { 
     var id = $(this).attr("id"); 
     $(this).attr("name", id); 
    }); 
</script> 

そしてStaticにページのClientIDModeを設定することを忘れないでください。

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" ClientIDMode="Static" %> 
関連する問題