@Swiftによる答えは正しいです。これがMVC Webフォームを使用した私の答えです。console.writeline などを置き換えます。
<div class="form">
<input class="input-text" type="text" id="RecipientName" name="RecipientName" value="Your Name *" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">
<input class="input-text" type="text" id="RecipientEmail" name="RecipientEmail" value="Your E-mail *" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">
<textarea class="input-text text-area" id="RecipientMessage" name="RecipientMessage" cols="0" rows="0" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;">Your Message *</textarea>
<input class="input-btn" type="submit" id="EmailSendButton" name="EmailSendButton" value="send message" onclick="EmailData()">
<div id="EmailConfirmation"></div>
</div>
<script>
function EmailData() {
$("#EmailSendButton").attr("disabled", "true");
var url = "/Main/EmailData";
var recipientName = $("#RecipientName").val();
var recipientEmail = $("#RecipientEmail").val();
var recipientMessage = $("#RecipientMessage").val();
var postData = { 'Name': recipientName, 'Email': recipientEmail, 'Message': recipientMessage }
$.post(url, postData, function (result) {
$("#EmailConfirmation").css({ 'display': 'block' });
$("#EmailConfirmation").text(result);
$("#EmailConfirmation").fadeIn(2000)
})
}
</script>
ビューモデル
public class EmailDataViewModel
{
public string Name { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public string Message { get; set; }
}
コントローラ
public string EmailData(EmailDataViewModel viewModel)
{
string api_user = "username";
string api_key = "password";
string toAddress = "admin@webapp.com";
string toName = "Administrator";
string subject = "Message from your web app";
string text = viewModel.Name + " " + viewModel.Message;
string fromAddress = viewModel.Email;
string url = "https://sendgrid.com/api/mail.send.json";
// Create a form encoded string for the request body
string parameters = "api_user=" + api_user + "&api_key=" + api_key + "&to=" + toAddress +
"&toname=" + toName + "&subject=" + subject + "&text=" + text +
"&from=" + fromAddress;
try
{
//Create Request
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myHttpWebRequest.Method = "POST";
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
// Create a new write stream for the POST body
StreamWriter streamWriter = new StreamWriter(myHttpWebRequest.GetRequestStream());
// Write the parameters to the stream
streamWriter.Write(parameters);
streamWriter.Flush();
streamWriter.Close();
// Get the response
HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
// Create a new read stream for the response body and read it
StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream());
string result = streamReader.ReadToEnd();
// Write the results to the console
Console.WriteLine(result);
}
catch (WebException ex)
{
// Catch any execptions and gather the response
HttpWebResponse response = (HttpWebResponse)ex.Response;
// Create a new read stream for the exception body and read it
StreamReader streamReader = new StreamReader(response.GetResponseStream());
string result = streamReader.ReadToEnd();
// Write the results to the console
Console.WriteLine(result);
}
return "Successful";
}