2014-08-29 7 views
2

Я пытаюсь создать форму с сообщением на моей странице aspx в моем приложении asp.net.Создайте форму на странице ASPX в asp.net

<form method="POST" action="https://www.vcs.co.za/vvonline/vcs.aspx"> 
    <input type="hidden" id="vcsTerminalId" name="p1" value="a" runat="server"/> 
    <input type="hidden" id="vcsReference" name="p2" value="b" runat="server"/> 
    <input type="hidden" id="vcsDescription" name="p3" value="c" runat="server"/> 
    <input type="hidden" id="vcsAmount" name="p4" value="d" runat="server"/> 
    <input type="hidden" id="vcsHash" name="hash" value="q" runat="server"/> 
    <input type="submit" value="Proceed to payment" /> 
</form> 

Как всегда во время выполнения эта форма исчезает и подает, но используется для формы страницы. Во время выполнения вся моя страница помещается в форму. Я думаю, что это вещь.

При работе на моей странице он будет выглядеть примерно так:

<%@ Page Title="" Language="C#" MasterPageFile="~/template/site.master" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="mainContainer" Runat="Server"> 
//Content inside!!!!! 
</asp:Content> 

Во время выполнения:

<form method="post" action="SearchResult.aspx?id=1561901" id="form1"> 
//Content in side 
</form> 

Как я могу добавить и то, что сверху упоминается форма?

+0

любая вещь, которую вы напишете в «mainContainer», будет размещена внутри тела главной страницы. –

+1

@ShujaatSiddiqui Да, вот где я показываю свою страницу, на этой странице я хочу кнопку, чтобы сделать сообщение. Так что мне нужно это в форме. Но все в Main Container уже размещено в форме, и вы не можете вставлять формы, насколько я знаю, поэтому он удаляет мою форму и просто имеет кнопку sumbit. – Pomster

+0

У меня нет проблемы с вашей задачей. просто перетащите кнопку из панели инструментов. внутри основного контейнера, и вы можете использовать кнопку для отправки формы. –

ответ

3

Выполнение межстраничных сообщений всегда было неудобно с помощью WebForms.

Чтобы сохранить свою разметку чистой от взломов, я использую вспомогательный класс, чтобы сделать его из CodeBehind:

RemotePost remotePostHelper = new RemotePost("https://www.vcs.co.za/vvonline/vcs.aspx"); 
remotePostHelper.Add("p1", "a"); 
remotePostHelper.Add("p2", "b"); 
remotePostHelper.Add("p3", "c"); 
remotePostHelper.Post(); 

класс Helper:

public partial class RemotePost 
{ 
    /// <summary> 
    /// Gets or sets the remote URL to POST to. 
    /// </summary> 
    public string PostUrl 
    { get; set; } 

    /// <summary> 
    /// Gets or sets the form's HTML name. 
    /// </summary> 
    public string FormName 
    { get; set; } 

    /// <summary> 
    /// Gets the collection of POST data. 
    /// </summary> 
    public NameValueCollection PostData 
    { get; private set; } 


    /// <param name="postUrl">The remote URL to POST to.</param> 
    public RemotePost(string postUrl) 
    { 
     this.PostData = new NameValueCollection(); 
     this.PostUrl = postUrl; 
     this.FormName = "formName"; 
    } 

    /// <summary> 
    /// Adds the specified name and value to the POST data collection.. 
    /// </summary> 
    /// <param name="name">The name of the element to add</param> 
    /// <param name="value">The value of the element to add.</param> 
    public void Add(string name, string value) 
    { 
     this.PostData.Add(name, value); 
    } 

    public void Post() 
    { 
     var context = HttpContext.Current; 
     context.Response.Clear(); 
     context.Response.Write("<html><head>"); 
     context.Response.Write(string.Format("</head><body onload=\"document.{0}.submit()\">", this.FormName)); 
     context.Response.Write(string.Format("<form name=\"{0}\" method=\"post\" action=\"{1}\" >", this.FormName, this.PostUrl)); 

     foreach(string name in this.PostData) 
     { 
      context.Response.Write(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", HttpUtility.HtmlEncode(name), HttpUtility.HtmlEncode(this.PostData[name]))); 
     } 

     context.Response.Write("</form>"); 
     context.Response.Write("</body></html>"); 
     context.Response.End(); 
    } 
} 
+0

Вы, сэр, мой герой! – Pomster

+0

@Pomster рад, что я мог бы помочь :) –

Смежные вопросы