2

在我的 c#.net 项目中,当我尝试开始 onClick 事件时出现此错误。我想我可能错过了一个重要的程序集参考,但无法弄清楚为什么会发生这个错误。该项目直到最近都运行良好,我所做的一些修改导致了这个问题

问题

应用程序中的服务器错误

“/”应用程序中的服务器错误。

参数字典包含方法 'System.Web.Mvc.ActionResult Index(Double, Double, System.String, System.String, System.String, System.String, System.String)”在“MyDisplayTracking.Controllers.HomeController”中。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:参数字典包含方法'System.Web.Mvc.ActionResult Index(Double,Double,System.String,System)的不可空类型'System.Double'的参数'lat'的空条目.String, System.String, System.String, System.String)”在“MyDisplayTracking.Controllers.HomeController”中。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[ArgumentException:参数字典包含方法'System.Web.Mvc.ActionResult Index(Double,Double,System.String,System.String,System'的不可空类型'System.Double'的参数'lat'的空条目.String, System.String, System.String)”在“MyDisplayTracking.Controllers.HomeController”中。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:parameters] System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary 2 parameters, MethodInfo methodInfo) +664911 System.Web.Mvc.<>c__DisplayClass1.<Execute>b__0(ParameterInfo parameterInfo) +18 System.Linq.WhereSelectArrayIterator2.MoveNext() +85 System.Linq.Buffer 1..ctor(IEnumerable1 source) +217 System.Linq.Enumerable.ToArray(IEnumerable1 source) +78 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2个参数) +133 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +27 System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28 System.Web.Mvc.Async.<>c__DisplayClass81.b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +50 System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +58 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +237 System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +12 System.Web.Mvc.Async.WrappedAsyncResult1.End() +57 System.Web .Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50 System.Web.Mvc.Async.<>c__DisplayClass2a.b__20() +24 System.Web.Mvc.Async.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) +126 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +45 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25 System.Web.Mvc.Async.WrappedAsyncResult1.End() +62 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +61 System.Web.Mvc.Async.<>c__DisplayClass4.b__3(IAsyncResult ar) +25 System.Web.Mvc.Async.WrappedAsyncResult1.End() +62 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +49 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25 System.Web.Mvc.Async.WrappedAsyncResult1.End() +62 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +49 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) +9 System.Web.CallHandlerExecutionStep.System .Web.HttpApplication.IExecutionStep.Execute() +9042429 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.1016

\

家庭控制器:

 public ActionResult MyStores(double lat, double lng, string storename, string city, string state, string distributor, string channels)
    {
        MyStoresModel r = new MyStoresModel();
        r.stores = new List<StoreDataModel>();
        using (DisplayTrackingEntities ctx = new DisplayTrackingEntities())
        {

我试图从我的索引视图中调用它,如下所示:

            <input type="hidden" id="lat" name="lat" />
        <input type="hidden" id="lng" name="lng" />
        <div class="row">
            <div class="form-actions">
                <button class="btn" onclick="return UseGPS();">Use GPS</button>
                <button class="btn" onclick="return Search();">Search</button>
            </div>
        </div>
4

2 回答 2

2

你得到了,System.ArgumentException因为你没有为任何一个隐藏字段分配值。您的视图应如下所示:

<input type="hidden" id="lat" name="lat" value="1.234" />
<input type="hidden" id="lng" name="lng" value="5.678" />
于 2013-11-12T22:42:15.613 回答
1

您可以在操作的参数列表中为 lat & lng 分配默认值,如下所示:

公共 ActionResult MyStores(double lat = 0.0, double lng = 0.0, string storename...

如果这些字段在页面上有值,它们将回发并覆盖默认值。如果它们没有值,它们将不会回发(因此为 null),因此字段将保留默认值。基本上,这些字段现在是可选参数。

于 2013-11-13T04:25:14.833 回答