Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Reiny

Submeter um formulário HTML direto a umja classe C# ?

Recommended Posts

Olá amigos gostaria de-lhes pedir um esclarecimento ! Sou um programador java dando meus primerios passos em .NET ( C# + ASP.NET ) , em um de meus exercicios tentei submeter um formulario HTML para uma classe C#, tentando simular o que eu posso fazer em java com um servelet e obtive um erro que me dizia entre outras coisas que isso era "Expressamente Proibido", gostaria que me dissesem se isso e possivel ? Caso alguem possa fazer um exemplo agradeço !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reiny Seja Bem Vindo ao Fórum Imasters, de uma olhada em nossas regras: Regras do Fórum iMasters

 

Poste seu código que esta com erro! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Fica dificil saber o que é.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo quintelab vlw pelas boas vindas , li as regras do forum e peço desculpas pelo tituo repetido ! bom quanto ao codigo e muito simples

<form method="post" action="Class.cs">
       <input name="nome" type="text" />
       <input type="submit">
   </form>

using System;
	using System.Collections.Generic;
	using System.Web;

	namespace administracao
   {
		public class Class
	   {
	   }
	}

ERRO : ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Erro de Servidor no Aplicativo '/'.

Este tipo de página não é atendido.

Descrição: Tipo de página solicitado não é atendido porque foi explicitamente proibido. Talvez a extensão '.cs' esteja incorreta. Examine o URL e certifique-se de que está digitado corretamente.

 

URL solicitada: /Class.cs

 

Informações sobre a Versão: Microsoft .NET Framework Versão:2.0.50727.3031; Versão do ASP.NET:2.0.50727.3031

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

OBS :

 

Apesar dessa classe estar vazia , fiz uma classe que colhia as informações pela classe HttpWebRequest do pacote system.net e tanbme deu eero , o problema e que nen chama a classe !!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara seu código esta um pouco confuso, pelo que entendi este código cs que postou não é referente ao formulário e sim uma classe a parte, o correto seria herda-la no código cs do seu formulário, acredito que não seja possível utiliza-la no action do HTML.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta certo vlw pela resposta quintelab, mal entrei no asp.net e ja obtive uma limitação que pra mim que não sou adpto das """ Facilidades/ Produtividades """ dos webcontrols e fatal pro meu futuro com a linguagem, queria implementar uma aplicação MVC na maun em c# mais parece que naum vai rolar , pois parece (como você mesmo disse ) naum tenho como submeter um formulario direto a uma classe C# que seria meu controlador (assim como faço com um servelet) mais brigadão mesmo amigo , c e muito prestativo vlw !!!!!! hehehe braço !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reiny, eu uso muito class.cs nos projetos procuro seguir à risca os mandamentos do dotnet que sugere que dividamos o projeto em pequenos codigos para melhor facilitar a manutenção:

Não sei se te ajuda mas vou postar parte dos codigos que uso abaixo e você dá uma conferida se é o que está procurando.

 

1) Conf. do web.config.

No caso aqui é um projeto utilizando mySql.

 

<connectionStrings>

<add name="JerodString" connectionString="Data Source=mysql.dominio.com.br; Database=minha_database; User Id=usuario; Password=minhasenha; pooling=false"/>

</connectionStrings>

2) uma vez configurado o webconfig, vamos ao form.

Um exemplo simples de form para contato. Veja que ele acessa um class para montar o combo de estados

 

<asp:Content ID="Content1" ContentPlaceHolderID="Navigate" Runat="Server">

<fieldset>

<legend><img src="Images/icContato.png" alt=""/></legend>

<asp:Panel ID="frmContato" runat="server" Visible="true">

<table border="0" cellpadding="4" cellspacing="4" width="100%" style="border:0">

<tr>

<td style="text-align:center; border:solid 1px silver" rowspan="9">

<b style="font-size:14pt">Queremos ouvir você!</b><br /><br />

<img src="Images/contato.jpg" alt=""/><br /><br />

<b style="font-size:12pt">Ligue TEL/FAX:<br />

<b style="font-size:14pt">0000-0000</b><br />

ou use o formulário ao lado.</b>

</td>

<td style="width:10px; background:#ffffff" rowspan="9"></td>

<td style="text-align:center; border:solid 1px silver">

<b>Preencha o formulário abaixo e clique Enviar</b><br />

<table border="0" cellpadding="2" cellspacing="2">

<tr>

<td class="label">Empresa:</td>

<td>

<asp:TextBox ID="empresa" runat="server" CssClass="required" /></td>

</tr>

<tr>

<td class="label">Cidade: </td>

<td>

<asp:TextBox ID="cidade" runat="server" CssClass="required"/></td>

</tr>

<tr>

<td class="label">Estado:</td>

<td>

<asp:DropDownList ID="estado" runat="server" DataSourceID="dsEstados" AppendDataBoundItems="True"

DataTextField="estado" DataValueField="uf" CssClass="required" style="font-size:8pt; width:120px">

<asp:ListItem Selected="True" Value="" Text="Selecione" />

<asp:ListItem Value="" Text="-------------------------" />

</asp:DropDownList>

<asp:ObjectDataSource ID="dsEstados" TypeName="Jerod.Estados" SelectMethod="Select" Runat="server"/>

 

 <span class="label" style="margin-left:8px"> DDD/Tel.: </span>

<asp:TextBox ID="fone" runat="server" CssClass="required" style="width:100px; text-align:center" MaxLength="12"/>

</td>

</tr>

<tr>

<td class="label">E-mail: </td>

<td>

<asp:TextBox ID="email" runat="server" CssClass="required"/></td>

</tr>

<tr>

<td class="label">Contato:</td>

<td>

<asp:TextBox ID="contato" runat="server" CssClass="required"/>

</td>

</tr>

<tr>

<td class="label">Assunto: </td>

<td>

<asp:TextBox ID="assunto" runat="server" CssClass="required" Width="300px"/></td>

</tr>

<tr>

<td class="label">Mensagem: </td>

<td>

<asp:TextBox ID="mensagem" runat="server" CssClass="required" TextMode="MultiLine" Rows="6"/></td>

</tr>

<tr>

<td></td>

<td style="text-align:center">

<asp:Button ID="btnSend" CssClass="btnOk" runat="server" Text="Enviar"

OnClientClick="return checkForm('aspnetForm')" OnClick="send"/></td>

</tr>

</table>

</td>

</tr>

</table>

</asp:Panel>

<asp:Label ID="statusLine" runat="server" />

 

<asp:Panel ID="mailOk" visible="false" runat="server">

<p style="text-align:center">

<b style="color:#006666">Seu e-mail foi enviado com sucesso.</b><br /><br />

Caso o mesmo necessite de uma resposta,<br />

responderemos o mais breve possível.<br /><br />

<b style="color:#006666">Obrigado pelo seu contato.</b></p>

</asp:Panel>

 

<asp:Panel ID="mailErr" visible="false" runat="server">

<p style="text-align:center">

<b style="color:red">Seu e-mail não foi enviado</b><br /><br />

Desculpe mas houve um erro no servidor de envio.</p>

<p style="text-align:center">

<asp:Label ID="mailError" runat="server" Height="75px" Width="407px"></asp:Label></p>

</asp:Panel>

</fieldset>

</asp:Content>

 

Agora no code-behind do aspx, faz validação dos campos. Embora isso seja feito em JS porém as vezes o JS falha

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class Contato : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

empresa.Attributes.Add("onkeypress", "return toUpper(this);");

cidade.Attributes.Add("onkeypress", "return toUpper(this);");

email.Attributes.Add("onkeypress", "return toLower(this);");

contato.Attributes.Add("onkeypress", "return toUpper(this);");

assunto.Attributes.Add("onkeypress", "return toUpper(this);");

fone.Attributes.Add("onkeypress", "return formataFone(event, this.id);");

}

}

 

public void send(object sender, EventArgs e)

{

if(empresa.Text == "")

statusLine.Text = "Campo Empresa não pode ficar em branco !!!";

else if (cidade.Text == "")

statusLine.Text = "Campo E-mail não pode ficar em branco !!!";

else if(estado.Text == "")

statusLine.Text = "Campo Estado não pode ficar em branco !!!";

else if(fone.Text == "")

statusLine.Text = "Campo Fone não pode ficar em branco !!!";

else if(email.Text == "")

statusLine.Text = "Campo E-mail não pode ficar em branco !!!";

else if(contato.Text == "")

statusLine.Text = "Campo Contato não pode ficar em branco !!!";

else if(assunto.Text == "")

statusLine.Text = "Campo Assunto não pode ficar em branco !!!";

if(mensagem.Text == "")

statusLine.Text = "Campo Mensagem não pode ficar em branco !!!";

 

else

{

string ebody = "<table cellpadding=2 cellspacing=2 border=0 width='100%'>" +

"<tr><td class=label>Empresa:</td><td class=value>" + empresa.Text + "</td>" +

" <td class=label>Contato:</td><td class=value>" + contato.Text + "</td></tr>" +

 

"<tr><td class=label>Cidade:</td><td class=value>" + cidade.Text + "/" + estado.Text +"</td>" +

" <td class=label>Fone:</td><td class=value>" + fone.Text + "</td></tr>" +

 

"<tr><td class=label>Email.:</td><td colspan=3><a href='mailto:" + email.Text + "'>" + email.Text + "</a></td></tr>" +

 

"<tr><td class=label>Assunto:</td><td class=value colspan=3>" + assunto.Text + "</td></tr>" +

"<tr><td class=label>Mensagem:</td><td colspan=3>" + mensagem.Text + "</td></tr>" +

"</table>";

 

// o class SendEmail é responsável pelo envio

string sended = SendEmail.SendEmail.Sender(empresa.Text, email.Text, "email@dedestino.com.br", "JEROD - Contato", ebody, true);

frmContato.Visible = false;

 

if(sended == "Email enviado com sucesso.")

mailOk.Visible = true;

else

{

mailErr.Visible = true;

mailError.Text = "O erro retornado foi:" + sended.ToString();

}

}

}

}

o class para estados:

using MySql.Data.MySqlClient;

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Configuration;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Collections.Generic;

 

namespace Jerod

{

/// <summary>

/// Executa procedures de seleção na database

/// </summary>

[system.ComponentModel.DataObject]

 

 

/// <summary>

/// Executa procedure para carregar e preencher o Estados lateral

/// </summary>

/// <param name="reader"></param>

 

public class Estados

{

private static readonly String _connectionString;

 

private string _estado;

public string estado

{

get { return _estado; }

set { _estado = value; }

}

 

private string _uf;

public string uf

{

get { return _uf; }

set { _uf = value; }

}

 

static Estados()

{

// recupera do web.config as configurações de conexão

_connectionString = WebConfigurationManager.ConnectionStrings["JerodString"].ConnectionString;

}

 

 

 

public Estados(MySqlDataReader reader)

{

_estado = (string)reader["estado"];

_uf = (string)reader["uf"];

}

 

[system.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjec

tMethodType.Select, true)]

public static List<Estados> Select()

{

//Initialize command

MySqlConnection con = new MySqlConnection(_connectionString);

MySqlCommand cmd = new MySqlCommand("SELECT * FROM estados ORDER BY estado", con);

cmd.CommandType = CommandType.Text;

List<Estados> results = new List<Estados>();

using (con)

{

con.Open();

MySqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{

results.Add(new Estados(reader));

}

return results;

}

}

}

}

 

e para completar o class para envio do email:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

//Classes para envio de emails

using System.Net;

using System.Net.Mail;

using System.Net.Mime;

using Quiksoft.FreeSMTP;

using System.Text.RegularExpressions;

 

namespace SendEmail

{

 

///<summary>

///Class para envio de emails

///</summary>

public class SendEmail

{

public static string Sender(

string nameFrom, // nome do remetente

string emailFrom, // email do remetente

string emailTo, // email do destinatario

string subject, // assunto

string message, // corpo da mensagem

Boolean Replay2User // enviar copia para o remetente

)

{

string eHTML; // usado para montar o email em html

string eTEXT; // usado para monar o email em text/plain

 

Boolean local;

local = (System.Web.HttpContext.Current.Request.UserHostAddress.ToString() == "127.0.0.1") ? true : false;

 

eHTML = @"<html>

<head>

<title>CLIENTE tal</title>

<style type=text/css>

* {

font: normal 9pt sans-serif, Arial, Helvetica, Verdana, Tahoma;

color: #000000

}

 

.subject {

text-align:center;

font: bolder 11pt sans-serif, Arial, Helvetica, Verdana, Tahoma;

width:500px;

}

 

.sendDate {

text-align=right;

font: normal 8pt sans-serif, Arial, Helvetica, Verdana, Tahoma;

background:#f0f0f0;

}

 

a {

font-weight:bold;

text-decoration:none;

}

 

a:hover {

color: #ff0000;

border-bottom: solid 1px #000066;

font-weight:bold;

text-decoration:none;

}

 

td {

padding:0 4px;

border:solid 1px silver;

}

 

.label {

text-align=right;

}

 

.value {

font-weight:bold;

text-transform: uppercase;

}

 

.rodape {

background:url(http://www.meudomino.com.br/net/Images/mailRodape.png) no-repeat;

text-align:center;

height:20px;

border:0;

}

</style>

</head>

 

<body topmargin=4 leftmargin=4>

<a href='http://www.meudomino.com.br/net'>

<img src='http://www.meudomino.com.br/net/Images/mailTop.png' border=0 width=565></a>

<table border=0 cellpadding=1 cellspacing=1 width=565>

<tr>

<td class='subject'>" + subject + @"</td>

<td class=sendDate>" + String.Format("{0:dd/MM/yyyy}", DateTime.Now) + @"</td></tr>

<tr>

<td colspan=2>" + message + @"</td></tr>

<tr>

<td class=rodape colspan=2>

<a href='http://www.meudomino.com.br/net'>http://www.meudomino.com.br</a>

</td>

</tr>

</table>

</body>

</Html>";

 

 

 

 

// Declara uma variável que armazenará a expressão regular a ser comparada.

// RegexOptions.IgnoreCase indica que não será CaseSensitive

eTEXT = Regex.Replace(eHTML, @"(.|\n)*?", string.Empty);

eTEXT = Regex.Replace(eTEXT, @" ", string.Empty);

 

//Create the EmailMessage object

EmailMessage msgObj = new EmailMessage();

 

//Specify from address and display name

msgObj.From.Email = emailFrom;

msgObj.From.Name = nameFrom;

 

 

//Adiciona envio de confirmação para a cliente

if (!local)

{

msgObj.Recipients.Add(emailTo, nameFrom, RecipientType.To);

// se true envia uma copia para o o remetente

if (Replay2User)

msgObj.Recipients.Add(emailFrom, "JEROD", RecipientType.To);

}

else

{

msgObj.Recipients.Add("webmaster@meudominio.com.br", nameFrom, RecipientType.To);

}

 

//Specify the subject

msgObj.Subject = subject;

 

//Add an HTML body part

msgObj.BodyParts.Add(eHTML, BodyPartFormat.HTML);

 

//Add a text body part to server as alternative text for non HTML mail readers

msgObj.BodyParts.Add(eTEXT, BodyPartFormat.Plain);

 

// charset correto

msgObj.CharsetEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");

 

//Add an attachment

//msgObj.Attachments.Add("d:\\cromo.psd");

 

//Create the SMTP object using the constructor to specify the mail server

SMTP smtpObj;

smtpObj = new SMTP("localhost");

 

 

//enviamos o e-mail através do método .send()

 

try

{

//Send the message

smtpObj.Send(msgObj);

}

catch (Exception ex)

{

// retorna com a mensagem de erro

return(ex.Message);

}

//excluímos o objeto de e-mail da memória

return ("Email enviado com sucesso.");

//msgObj.Dispose();

}

}

}

 

Espero que isso te ajude qualquer coisa se puder ajudar posta ai novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Lab Design tranquilo cara vlw pelo codigo , porém oq estou tentando fazer e simples e somente submeter um form html para uma classe c# pura sem o uso de webcontrols ( "pois considero eles bastante instaveis" ) assim como um form html postaria a um servelet por exemplo !!! mais vlw pelo codigo !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.