Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将值从视图传递到另一控制器中的操作_Asp.net Mvc_Asp.net Mvc 3_.net 4.0_Razor - Fatal编程技术网

Asp.net mvc 将值从视图传递到另一控制器中的操作

Asp.net mvc 将值从视图传递到另一控制器中的操作,asp.net-mvc,asp.net-mvc-3,.net-4.0,razor,Asp.net Mvc,Asp.net Mvc 3,.net 4.0,Razor,我正在使用@html.Actionlink()构建一个链接,该链接重定向到另一个控制器(不是具有视图的原始控制器)中的操作。下面是我的语句 @Html.ActionLink(@orderNumber.ToString().Trim(), "SearchResult", "OrderStatus", @orderNumber.ToString(), new { target = "_self" }) 但单击视图时,我得到一个例外: The resource cannot be found. De

我正在使用@html.Actionlink()构建一个链接,该链接重定向到另一个控制器(不是具有视图的原始控制器)中的操作。下面是我的语句

@Html.ActionLink(@orderNumber.ToString().Trim(), "SearchResult", "OrderStatus", @orderNumber.ToString(), new { target = "_self" })
但单击视图时,我得到一个例外:

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies)     could have been removed, had its name changed, or is temporarily     unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /OrderStatus/SearchResult
虽然我有一个名为OrderStatus的控制器,但有一个名为SearchResult

我缺少一些语法吗

搜索结果方法:

[AcceptVerbs("POST")]
public ActionResult SearchResult(FormCollection collection)
    {
        try
        {
            string orderNumber = collection["searchItem"].ToString();

            if (string.IsNullOrEmpty(orderNumber))
                return View("OrderStatusSearch");

            ////obtain sales oder header for paased order number
            #region sales order header
            orderNumber = orderNumber.Trim();

            ObjectParameter[] parameters = new ObjectParameter[1];
            parameters[0] = new ObjectParameter("OrderNumber", orderNumber);

            var headerQuery = dbContext.ExecuteFunction<Models.SalesOrderHeader>("uspGetHeaderDetails", parameters);

            Models.SalesOrderHeader salesOrderHeader = new Models.SalesOrderHeader();
            salesOrderHeader = headerQuery.SingleOrDefault();

            ////// return empty view if sales ordr header is null
            if (salesOrderHeader == null)
                return View("EmptySearch");
            #endregion
             ....................

            ////create sales order to be passed to view
            #region Create Sales Order
            {
                Models.SalesOrder salesOrder = new Models.SalesOrder();

                salesOrder.salesOrderHeader = salesOrderHeader;
                 ..................
                return View(salesOrder);
            }
            #endregion
        }
        catch (Exception e)
        {
            return View("EmptySearch");
        }
    }
[AcceptVerbs(“POST”)]
公共操作结果搜索结果(FormCollection集合)
{
尝试
{
string orderNumber=集合[“searchItem”]。ToString();
if(string.IsNullOrEmpty(orderNumber))
返回视图(“OrderStatusSearch”);
////获取PAASE订单号的销售订单标题
#区域销售订单头
orderNumber=orderNumber.Trim();
ObjectParameter[]参数=新的ObjectParameter[1];
参数[0]=新的ObjectParameter(“OrderNumber”,OrderNumber);
var headerQuery=dbContext.ExecuteFunction(“uspGetHeaderDetails”,参数);
Models.SalesOrderHeader SalesOrderHeader=新模型。SalesOrderHeader();
salesOrderHeader=headerQuery.SingleOrDefault();
//////如果销售订单标题为空,则返回空视图
if(salesOrderHeader==null)
返回视图(“清空搜索”);
#端区
....................
////创建要传递给视图的销售订单
#区域创建销售订单
{
Models.SalesOrder SalesOrder=新的Models.SalesOrder();
salesOrder.salesOrderHeader=salesOrderHeader;
..................
退货视图(销售订单);
}
#端区
}
捕获(例外e)
{
返回视图(“清空搜索”);
}
}

如果链接代码错误,请尝试以下操作

@Html.ActionLink("NameToBeDisplayed", "SearchResult", "OrderStatus", new { yourParameter = @OrderNumber.ToString() })

看起来可能有一两件事不对

1)您确定使用了正确的Html.ActionLink重载吗

您使用的重载应该是Html.ActionLink([link text]、[action]、[controller]、[route values]、[htmlAttributes]),您为路由值提供的所有内容都是一个字符串。这需要是RouteValueDictionary或匿名对象,而不仅仅是字符串。试试下面这个,这是否如你所期望的那样有效

@Html.ActionLink(@orderNumber.ToString().Trim(), "SearchResult", "OrderStatus", new{ id = @orderNumber.ToString() }, new { target = "_self" })
我假设您希望它生成一个URL,例如
/OrderStatus/SearchResult/999
,其中999是您拥有的任何订单号。是这样吗

2)您的SearchResult ActionResult只接受帖子。单击ActionLink生成的超链接将导致GET。因为您没有接受GET的控制器/操作,所以404是预期的结果

如果ActionLink生成指向
/OrderStatus/SearchResult[/order number]
的链接,则相应的操作方法必须如下所示(假设默认路由配置):


如果希望此操作仅允许GETs,则可以使用属性
[HttpGet]
作为前缀,但这不是必需的。

SearchResult方法的参数是什么?是否编辑了我的代码以给出搜索结果的定义method@hunter:谢谢,伙计,你的评论问题非常有用:)很乐意帮忙。很明显,您的方法需要一个已发布的表单是的,无法达到该点,因为异常是在说其他内容,但您的问题突出了这一点。
public ActionResult SearchResult(string orderNumber) { ... }