ASP.NET 4 Форма внутри страницы веб-формы - PullRequest
3 голосов
/ 21 сентября 2010

Я новичок в программировании, но пытаюсь учиться. Я работаю в Visual Studio 2010 с веб-проектом asp.net с использованием C #. Я пытаюсь внедрить кнопки PayPals Buy Now на одной из страниц, и сгенерированный код также находится в тегах формы. Независимо от того, какая это кнопка, первая кнопка на странице никогда не работает, и под ней есть сплошная синяя линия. Все остальные кнопки работают нормально. даже если я удаляю ее, следующая кнопка становится первой на странице, а затем она тоже не работает .... Я узнаю, что, поскольку все страницы являются формами, а сгенерированный код также является формой, у меня не может быть формы внутри форма. Это правильно? Есть ли способ обойти это ... все, что я действительно знаю, это маленький HTML и маленький CSS, я пытаюсь изучить JavaScript, C #, XML, CSS, ASP.NET, а также саму Visual Studio. Любая помощь будет принята с благодарностью. Если кто-то хочет узнать, о чем я говорю, зайдите на www.curbappealfordummies.net/Packages.aspx Это сайт, над которым я работаю, и веб-мастер ... Спасибо, ребята, за вашу помощь.

Ответы [ 3 ]

1 голос
/ 21 сентября 2010

Это всеобъемлющий вопрос, но один из возможных ответов - сгенерировать вторую форму, в которой есть необходимый код PayPal.

Это упрощенный пример ; обычно есть логика, необходимая, чтобы привести к этой точке. Например, если кнопки должны содержаться в форме по умолчанию ASP.Net, для подключения их к этой второй форме и кода, который содержит правильные скрытые значения, потребуется код сервера и / или клиента.

В вашей веб-форме

<form id="form1" runat="server">
<!-- Contents of your server form -->    
</form>
<%=base.GetMarkupOutsideDefaultForm() %>

В вашем коде позади

public string GetMarkupOutsideDefaultForm()
        {
            //
            // Return the markup needed for a PayPal form, 
            // including javascript needed to automatically submit it.
            // AppSettings can be any configuration object that contains
            // the needed URL (or you can hardcode it)
            StringBuilder sb = new StringBuilder();
            sb.Append( "<form action=\"" + AppSettings.PayPalUrl + "\" method=\"post\" id=\"frmPayPal\" target=\"_blank\">" );

            // add hidden PayPal fields

            sb.Append( "</form>" );

            sb.Append( "<script type=\"text/javascript\">document.forms[\"frmPayPal\"].submit();</script>" );

            return sb.ToString();
        }

Если логика сложная, второй блок кода действительно должен содержаться в вспомогательном классе.

Надеюсь, что это ставит кого-то на правильный путь.

1 голос
/ 21 сентября 2010

Возможно, вам нужно начать с учебника, разработанного, чтобы помочь вам получить достаточное количество базовых знаний, чтобы вы могли лучше понять, что вы действительно хотите делать ... посмотрите видео на http://www.asp.net/general/videos/build-your-first-asp-net-application-with-asp-net-web-forms и там тоже много ресурсов. Это не так сложно, если у вас есть мотивация учиться, что звучит так, как вы.

0 голосов
/ 21 сентября 2010

Я знаю, что вы имеете в виду. Попробуйте добавить дополнительный

<form action='https://www.paypal.com/cgi-bin/webscr' method='post' target='paypal'></form>

Вверху.

Пример:

<form id="form1" runat="server">
  <div>
    <form action='https://www.paypal.com/cgi-bin/webscr' method='post' target='paypal'>
    </form>
  </div>
  <div>
    <form action='https://www.paypal.com/cgi-bin/webscr' method='post' target='paypal'>
      <input type='hidden' name='add' value='1'>
      <input type='hidden' name='cmd' value='_cart'>
      <input type='hidden' name='business' value='<%# DataBinder.Eval(Container.DataItem, "business_email") %>'>
      <input type='hidden' name='no_shipping' value='0'>
      <input type='button' name='submit' value='Add To Cart' title='Add to Cart Button'>
    </form>
  </div>
</form>

Просто, но работает.

Или, если вам не нравится эта идея, попробуйте этот пост:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...