Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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
C# 使用actionlink从视图调用控制器操作结果方法_C#_Asp.net Mvc - Fatal编程技术网

C# 使用actionlink从视图调用控制器操作结果方法

C# 使用actionlink从视图调用控制器操作结果方法,c#,asp.net-mvc,C#,Asp.net Mvc,我是MVC的新手,仍然在搞清楚一切是如何运作的。目前,我正在尝试从我的视图调用控制器中的方法,但我不确定最好的方法。这是我想要运行的SalesOrdersController方法 public ActionResult revertToPending(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } SalesOrde

我是MVC的新手,仍然在搞清楚一切是如何运作的。目前,我正在尝试从我的视图调用控制器中的方法,但我不确定最好的方法。这是我想要运行的SalesOrdersController方法

public ActionResult revertToPending(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    SalesOrder salesOrder = db.SalesOrders.Find(id);

    if (salesOrder == null)
    {
        return HttpNotFound();
    }

    ViewBag.statusList = new List<Object>
        {
            new {value = SOStatus.Pending, text = "Pending" },
            new {value = SOStatus.Released, text = "Released" },
            new {value = SOStatus.Released, text = "Shipped" },
            new {value = SOStatus.BackOrdered, text = "Back Ordered" },
            new {value = SOStatus.Cancelled, text = "Cancelled" },

        };

    return View(salesOrder);
}
public ActionResult-revertToPending(int?id)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
SalesOrder SalesOrder=db.SalesOrders.Find(id);
如果(salesOrder==null)
{
返回HttpNotFound();
}
ViewBag.statusList=新列表
{
new{value=SOStatus.Pending,text=“Pending”},
新{value=SOStatus.Released,text=“Released”},
新{value=SOStatus.Released,text=“Shipped”},
新建{value=SOStatus.BackOrdered,text=“Back Ordered”},
新建{value=SOStatus.Cancelled,text=“Cancelled”},
};
退货视图(销售订单);
}
这是我的看法


    <div class="form-group">
        @Html.LabelFor(model => model.SalesOrderStatus, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.SalesOrderStatus, new SelectList(ViewBag.statusList, "value", "text"), new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.SalesOrderStatus, "", new { @class = "text-danger" })          

            @Html.ActionLink("Revert to Pending", "revertToPending", "SalesOrder")
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.BillingStatus, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EnumDropDownListFor(model => model.BillingStatus, htmlAttributes: new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.BillingStatus, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Details, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextAreaFor(model => model.Details, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Details, "", new { @class = "text-danger" })
        </div>
    </div>


    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn" />
        </div>
    </div>


@LabelFor(model=>model.SalesOrderStatus,htmlAttributes:new{@class=“control label col-md-2”})
@DropDownListFor(model=>model.SalesOrderStatus,新建SelectList(ViewBag.statusList,“value”,“text”),新建{@class=“form control”})
@Html.ValidationMessageFor(model=>model.SalesOrderStatus,“,new{@class=“text danger”})
@ActionLink(“恢复到挂起”、“恢复到结束”、“销售订单”)
@LabelFor(model=>model.BillingStatus,htmlAttributes:new{@class=“controllabel col-md-2”})
@EnumDropDownListFor(model=>model.BillingStatus,htmlAttributes:new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.BillingStatus,“,new{@class=“text danger”})
@LabelFor(model=>model.Details,htmlAttributes:new{@class=“controllabel col-md-2”})
@Html.TextAreaFor(model=>model.Details,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Details,“,new{@class=“text danger”})
我希望在用户按下视图中的按钮时运行

像这样的

@Html.ActionLink(“恢复到挂起”、“恢复到结束”、“销售订单”)

我知道我做错了,因为我不希望它导致revertToPending视图,因为它不存在。但我希望在按下链接时运行控制器方法


谢谢

相关的HTML代码在哪里?有表格吗?就个人而言,如果您只是将一个简单的值(如int或字符串)传递给控制器方法,我将使用ajax调用。然而,如果你想使用
ActionLink
,你可以看看这个例子@JamesS是的,我只是刚刚接触这个例子,所以我认为我现在还不太了解每件事的运作方式,也不知道最好的方式。因为我希望用户能够单击“还原到挂起”链接,然后让控制器将视图呈现到挂起页面。您所说的“将视图呈现到挂起页面”是什么意思?你的意思是将用户带到新页面还是在当前页面上显示部分视图?@JamesS我添加了相关的html以帮助您理解,但这只是同一页面上的部分视图。因为当“SOStatus=pending”与“So status=released”相比时,页面略有不同,所以我只想让它恢复到按链接时最初“released”时的样子。如果您只想“恢复”到之前的状态,您可以调用控制器方法,该方法使用最初发送的任何(如果有的话)参数创建/显示视图。听上去,这并不是你想要的局部视图,而是重新加载页面