Как вызвать actionresult из вида с помощью кнопки (отправить)? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь вызвать actionresult в моем контроллере.Но он не вызывает его из вида.

Я пытался использовать onclick="location.href='@Url.Action("action", "controller")'">, но он даже не входит в функцию.

Мой взгляд:

@using (Html.BeginForm("WritePost", "Post", FormMethod.Post, new { enctype 
= "Multipart/form-data" }))
{

@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Skriv inlägg</h4>
<hr />
<div>
@{Html.RenderAction("_CategoryPartialView", "Category");}
@Html.HiddenFor(model => model.CategoryId)
</div>

<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = 
"control-label col-md-2" })
<div class="col-md-10">
    @Html.EditorFor(model => model.Title, new { htmlAttributes = new { 
@class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Title, "", new { @class = 
"text-danger" })
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Content, htmlAttributes: new { @class = 
"control-label col-md-2" })
<div class="col-md-10">
    @Html.TextAreaFor(model => model.Content, 10, 100, new { @class = 
"form-control" })
    @Html.ValidationMessageFor(model => model.Content, "", new { @class = 
"text-danger" })
</div>

<input type="file" name="file" />
@Html.ValidationMessageFor(model => model.File)

</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">

<input type="submit" value="Send" class="btn btn-default" />

Мой контроллер

public ActionResult EmailWhenPost()
{
    try
    {
        if (ModelState.IsValid)
        {
            var senderEmail = new MailAddress("ExampleMail@gmail.com");
            var receiverEmail = new MailAddress("ExampleMail2@gmail.com");
            var password = "Pass";
            var subject = "New Post";
            var body = "Message";
            var smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(senderEmail.Address, password)
            };
            using (var mess = new MailMessage(senderEmail, receiverEmail)
            {
                Subject = subject,
                Body = body
            })
            {

                smtp.Send(mess);
            }
            return View();
        }
    }

    catch (Exception)
    {
        ViewBag.Error = "Some Error";
    }
    return View();
}

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

1 Ответ

0 голосов
/ 07 февраля 2019

Вы должны вызвать правильную функцию MyController / EmailWhenPost (переименуйте это в SendEmail и добавьте атрибут [HttpPost], а затем в действии контроллера просто верните void (метод контроллера, который возвращает void, выдаст EmptyResult.)

Сначала прочитайте эту статью об общей маршрутизации в ASP.NET MVC

Затем прочитайте эту статью MSDN о получении пустых результатов

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