我想通过我的Html.ActionLink
页面中的index
调用我的控制器类中的操作,但我收到错误并且无法理解这是为什么。
任何人都可以帮助我吗?
Test
中的HomeController.cs
操作是我要调用的操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using Microsoft.Exchange.WebServices.Data;
namespace ExchangeRazor.Controllers
{
public class HomeController : Controller
{
public ActionResult Index ()
{
var mvcName = typeof(Controller).Assembly.GetName ();
var isMono = Type.GetType ("Mono.Runtime") != null;
ViewData ["Version"] = mvcName.Version.Major + "." + mvcName.Version.Minor;
ViewData ["Runtime"] = isMono ? "Mono" : ".NET";
return View ();
}
public ActionResult Test()
{
ExchangeService service = new ExchangeService ();
//CREDENTIALS!//
service.Credentials = new WebCredentials ("*****@****.com", "******");
service.Url = new Uri ("https://outlook.office365.com/EWS/Exchange.asmx");
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
EmailMessage email = new EmailMessage (service);
email.ToRecipients.Add ("********");
email.Subject = "MacHallo";
email.Body = new MessageBody ("Melding fra mac exchange webservices API");
email.Send ();
return RedirectToAction("Index");
}
}
}
Index.cshtml:
<h2>Welcome to ASP.NET MVC @ViewData["Version"] on @ViewData["Runtime"]!</h2>
<button>@Html.ActionLink("Send", "Test")</button>
修改:
system.missingMethodException而 找不到方法:&#39; System.Web.Routing.RouteCollection.get_AppendTrailingSlash&#39;。
描述:HTTP 500.Error处理请求。 详细信息:非Web异常。 异常来源(应用程序或对象的名称):System.Web.Mvc。
答案 0 :(得分:1)
您可以执行以下操作:
<form action="~/.../Test" method="post">
<input type="submit" id="btnSend" value="Send" />
</form>
请注意,您需要相应地映射到Test
控制器。
假设您有更多信息要提交,那么这会自动触发您的内容form submit
。然后,这将调用您的控制器Test
。您的另一种方法是使用Ajax
,您也可以触发post
。
答案 1 :(得分:1)
此刻没有机会尝试,但您可以尝试删除[HttpPost]。
答案 2 :(得分:0)
由于您的操作Test
产生副作用,我建议您使用POST
代替GET
。
使用按钮将链接更改为表单。
<h2>Welcome to ASP.NET MVC @ViewData["Version"] on @ViewData["Runtime"]!</h2>
@using(Html.BeginForm("Test", "Home", FormMethod.Post))
{
<button type="submit">Send</button>
}
然后装饰控制器方法。
[HttpPost]
public ActionResult Test() { /* ... */ }