Xamarin ASP mvc 4动作,参数不起作用

时间:2014-02-17 10:59:13

标签: asp.net-mvc mono action xamarin

我有这些行动:

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。我还没有定义任何路线。

3 个答案:

答案 0 :(得分:7)

使用最新的单声道(3.6.1)无法解决问题。 有用的是: 如果您正在使用5.X NuGet Microsoft ASP.NET MVC软件包,则需要降级到MVC 4.

步骤:

  1. 在NuGet包之后卸载(顺序很重要):
    • Microsoft.AspNet.WebPages
    • Microsoft.AspNet.Razor
    • Microsoft.AspNet.Mvc
  2. 安装Microsoft ASP.NET MVC 4 NuGet包。
  3. 可能发生的错误:

    • 视图&#39;索引&#39;或者找不到它的主人。
      • 解决方案 - 将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" />

    • System.InvalidOperationException检测到的ASP.NET网页版本冲突:指定版本为“3.0.0.0”,但bin中的版本为“2.0.0.0”。要继续,请从应用程序的bin目录中删除文件,或删除web.config中的版本规范。
      • 解决方案 - 在根目录/ Web.Config 中将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