我有这些行动:
public class HomeController : Controller
{
public ActionResult Index ()
{
ViewData ["Message"] = "Welcome to ASP.NET MVC on Mono!";
return View ();
}
public ActionResult Pages (string test)
{
ViewBag.Message = test;
return View ();
}
}
页面操作无效。我收到错误500:
System.TypeLoadException
Could not load type 'System.Web.UnvalidatedRequestValuesBase' from assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): System.Web.Mvc.
Exception stack trace:
at System.Web.Mvc.FormValueProviderFactory.GetValueProvider (System.Web.Mvc.ControllerContext controllerContext) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider (System.Web.Mvc.ControllerContext controllerContext) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerBase.get_ValueProvider () [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerActionInvoker.GetParameterValue (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ParameterDescriptor parameterDescriptor) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerActionInvoker.GetParameterValues (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionDescriptor actionDescriptor) [0x00000] in <filename unknown>:0 at System.Web.Mvc.Async.AsyncControllerActionInvoker+<>c__DisplayClass21.<BeginInvokeAction>b__19 (System.AsyncCallback asyncCallback, System.Object asyncState) [0x00000] in <filename unknown>:0
如果我从该操作中删除参数工作正常。
有什么想法吗?
提前致谢!
P.S。我还没有定义任何路线。
答案 0 :(得分:7)
使用最新的单声道(3.6.1)无法解决问题。 有用的是: 如果您正在使用5.X NuGet Microsoft ASP.NET MVC软件包,则需要降级到MVC 4.
System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc
节点的factoryType
属性中的 /Views/Web.Config 中的host
版本更改为 4.0.0.0 。
所以行看起来像这样: <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
webpages:Version
更改为2.0.0.0,使其如下所示:
<add key=”webpages:Version” value=”2.0.0.0” />
然后你可以在控制器动作中使用参数。
答案 1 :(得分:1)
这很令人尴尬,但这是我的解决方法,直到Mono更新System.Web:
public ActionResult Index() //string app_id, string session_id, int surah_id, int ayat_id)
{
string app_id = Request["app_id"];
string session_id = Request["session_id"];
int surah_id = Int32.Parse(Request["surah_id"]);
int ayat_id = Int32.Parse(Request["ayat_id"]);
// ...
}
答案 2 :(得分:1)
我在MVC
项目中遇到与OP相同的错误。 (目前在Xamarin
上使用Mac
我正在使用Microsoft Exchange WebServices,我发现降级此软件包解决了我的问题。我将Microsoft.Exchange.Webservices
包从2.2
降级为1.2
。