Используя встроенные стандартные HTML-формы с ASP.NET

Попробуйте прочитать строку подключения следующим образом вместо использования ConfigurationManager:

var connectionString = Configuration["connectionStrings:ProductsEntities1"];

Я не уверен, что эта строка подключения действительна. Вы можете проверить https://www.connectionstrings.com/sql-server/ для получения дополнительной информации.

10
задан Bill the Lizard 6 October 2009 в 19:04
поделиться

6 ответов

Это - интересная проблема. Идеально Вы только хотите 1 тег form на странице, как другие пользователи упомянули. Потенциально Вы могли отправить данные с помощью JavaScript, не имея 2 тегов form.

Пример взят отсюда, измененный для Ваших потребностей. Не 100%, уверенных, если это будет работать на Вас, но я думаю, что это - то, как необходимо будет приблизиться к нему.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">

function postdata()
{
   var fieldValue = document.getElementById("field1").value;
   postwith("http://someothersite.com",{field1:fieldValue});
}

function postwith (to,p) {
  var myForm = document.createElement("form");
  myForm.method="post" ;
  myForm.action = to ;
  for (var k in p) {
    var myInput = document.createElement("input") ;
    myInput.setAttribute("name", k) ;
    myInput.setAttribute("value", p[k]);
    myForm.appendChild(myInput) ;
  }
  document.body.appendChild(myForm) ;
  myForm.submit() ;
  document.body.removeChild(myForm) ;
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
           <div>
                <input type="text" id="field1" name="field1" />
                <asp:Button ID="btnSubmitSubscribe" runat="server" Text="Submit" OnClientClick="postdata(); return false;" />

       </div>

</div>
</form>
</body>
</html>

Если JavaScript не является жизнеспособным вариантом - можно использовать объект HttpWebRequest .NET создать вызов сообщения в коде позади. Выглядел бы примерно так в коде позади (предположение, что Ваше текстовое поле является текстовым полем asp:

private void OnSubscribeClick(object sender, System.EventArgs e)
{
string field1 = Field1.Text;


ASCIIEncoding encoding=new ASCIIEncoding();
string postData="field1="+field1 ;
byte[]  data = encoding.GetBytes(postData);

// Prepare web request...
HttpWebRequest myRequest =
  (HttpWebRequest)WebRequest.Create("http://someotherwebsite/");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
}
10
ответ дан 3 December 2019 в 16:11
поделиться

Вложенные формы не возможны в HTML согласно W3C. Можно достигнуть намеченного результата с помощью JavaScript или с jQuery, как объяснил Peter на блоге под названием Мои Мысли.

3
ответ дан 3 December 2019 в 16:11
поделиться

У меня была та же ситуация как Ross - за исключением того, что мои входные типы были всеми "скрытыми" varitey.

Ответ Cowgod получил меня думающий о вложенных формах в моей .aspx странице. Я закончил "невложение" моя 2-я форма Из основной формы .aspx () и поместил его (наряду с моими js тегами script) только под тегом основного текста - но перед основным .aspx тегом form.

Внезапно, все отправляло, как это, как предполагалось. Действительно ли это - взлом?

0
ответ дан 3 December 2019 в 16:11
поделиться

ASP.NET позволяет Вам иметь несколько форм на одной странице, но только один может быть runat=server. Однако я не думаю, что можно вложить формы вообще.

Вам, возможно, придется сделать новую основную страницу, один без тега form на нем так, форма будет работать на той одной странице только. Это не хорошее решение, если Вы не можете поместить форму вне формы основных страниц и использовать JavaScript для представления второй формы, но это едва лучше. Действительно нет никакого хорошего решения для того, чего Вы пытаетесь достигнуть, и раз так я хотел бы услышать его. Я не думаю, что можно сделать вызов POST из кода - позади, не так ли? Я уверен, что существует некоторый путь. Но это - вероятно, единственное решение: из кода.

-1
ответ дан 3 December 2019 в 16:11
поделиться

Есть очень хорошее решение этой проблемы.

Вы можете вставить тег перед своим

чтобы закрыть форму asp.net, которая вызывает проблему. Не забудьте добавить тег после вашей html-формы. Это может привести к тому, что редактор выдаст вам исключение, но не беспокойтесь, это сработает.

6
ответ дан 3 December 2019 в 16:11
поделиться

Если добавить к форме кнопку ASP.NET и установить ее свойство PostBackUrl на внешний сайт, то все данные формы будут отправлены на этот URL.

7
ответ дан 3 December 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: