MVC4和Razor中参数相同的操作

MVC4和Razor中参数相同的操作,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,在我的控制器中,我有两个动作,当组合被更改或按下更新按钮时,POST动作被调用。这工作正常 当我创建时,如果创建成功,我将使用返回重定向到操作(“索引”) 问题就从这里开始。我需要索引中的组合获得创建中使用的id的selectedvalue,但我无法在索引操作中传递另一个参数,因为POST操作已经有一个参数 如何将参数传递给GET操作并使用Create操作中的selectedvalue更新组合 我尝试使用一个“returnview()”,它工作了,但没有达到预期效果 以下是行动: [HttpGe

在我的控制器中,我有两个动作,当组合被更改或按下更新按钮时,POST动作被调用。这工作正常

当我创建时,如果创建成功,我将使用
返回重定向到操作(“索引”)

问题就从这里开始。我需要索引中的组合获得创建中使用的id的selectedvalue,但我无法在索引操作中传递另一个参数,因为POST操作已经有一个参数

如何将参数传递给GET操作并使用Create操作中的selectedvalue更新组合

我尝试使用一个“returnview()”,它工作了,但没有达到预期效果

以下是行动:

[HttpGet]
public ActionResult Index()
{
    ViewBag.ID_CONTRATO = new SelectList(db.CAT_CONTRATOS.Where(t => (t.BAJA == null || t.BAJA == false)), "ID_CONTRATO", "CONTRATO");
    ViewBag.listado = Enumerable.Empty<CAT_CONCEPTOS>();
    return View();
}

[HttpPost]
public ActionResult Index(int Contrato = 0)
{
    if (Contrato == 0)
    {
        ViewBag.ID_CONTRATO = new SelectList(db.CAT_CONTRATOS.Where(t => (t.BAJA == null || t.BAJA == false)), "ID_CONTRATO", "CONTRATO");
        ViewBag.listado = Enumerable.Empty<CAT_CONCEPTOS>();
    }
    else
    {
        ViewBag.ID_CONTRATO = new SelectList(db.CAT_CONTRATOS.Where(t => (t.BAJA == null || t.BAJA == false)), "ID_CONTRATO", "CONTRATO", Contrato);
        var cat_conceptos = db.CAT_CONCEPTOS.Include(c => c.CAT_CONTRATOS).Where(t => ((t.BAJA == null || t.BAJA == false) && (t.ID_CONTRATO == Contrato)));
        ViewBag.listado = cat_conceptos;
    }
    return View();
}

[HttpPost]
public ActionResult Create(CAT_CONCEPTOS cat_conceptos)
{
    if (ModelState.IsValid)
    {
        using (TransactionScope scope = new TransactionScope())
        {
            db.CAT_CONCEPTOS.Add(cat_conceptos);
            db.SaveChanges();
            TransaccionesController t = new TransaccionesController();
            t.Transaccionar("CAT_CONCEPTOS", "Create", cat_conceptos.ID_CONCEPTO, "Se creo un concepto");

            scope.Complete();
            return RedirectToAction("Index");
        }
    }

    ViewBag.ID_CONTRATO = new SelectList(db.CAT_CONTRATOS.Where(t => (t.BAJA == null || t.BAJA == false)), "ID_CONTRATO", "CONTRATO", cat_conceptos.ID_CONTRATO);
    return View(cat_conceptos);
}
[HttpGet]
公共行动结果索引()
{
ViewBag.ID_CONTRATO=新选择列表(db.CAT_CONTRATO.Where(t=>(t.BAJA==null | | t.BAJA==false)),“ID_CONTRATO”,“CONTRATO”);
ViewBag.listado=Enumerable.Empty();
返回视图();
}
[HttpPost]
公共操作结果索引(int Contrato=0)
{
if(Contrato==0)
{
ViewBag.ID_CONTRATO=新选择列表(db.CAT_CONTRATO.Where(t=>(t.BAJA==null | | t.BAJA==false)),“ID_CONTRATO”,“CONTRATO”);
ViewBag.listado=Enumerable.Empty();
}
其他的
{
ViewBag.ID_CONTRATO=新选择列表(db.CAT_CONTRATO.Where(t=>(t.BAJA==null | | t.BAJA==false)),“ID_CONTRATO”,“CONTRATO”,CONTRATO);
var cat_conceptos=db.cat_conceptos.Include(c=>c.cat_CONTRATOS)。其中(t=>((t.BAJA==null | | t.BAJA==false)和&(t.ID_CONTRATO==CONTRATO));
ViewBag.listado=cat_conceptos;
}
返回视图();
}
[HttpPost]
公共行动结果创建(CAT_概念CAT_概念)
{
if(ModelState.IsValid)
{
使用(TransactionScope范围=新TransactionScope())
{
db.CAT_CONCEPTOS.Add(CAT_CONCEPTOS);
db.SaveChanges();
TransaccionesController t=新的TransaccionesController();
t、 交通事故(“概念类”、“创建类”、“概念类”和“概念类”);
scope.Complete();
返回操作(“索引”);
}
}
ViewBag.ID_CONTRATO=新选择列表(db.CAT_CONTRATO.Where(t=>(t.BAJA==null | | t.BAJA==false)),“ID_CONTRATO”,“CONTRATO”,CAT_conceptos.ID_CONTRATO);
返回视图(cat_概念);
}
以及以下观点:

@model IEnumerable<SAC.Models.CAT_ACTIVOS>
@{
string controlador = ViewContext.RouteData.Values["Controller"].ToString();    
}
@section head{
<link href="@Styles.Url("~/content/DataTables/css")" rel="stylesheet"/>
}
@{
ViewBag.Title = "Activos";
}

<h2>@ViewBag.Title</h2>

<div class="row-fluid">
<div class="span12">
    <div class="row-fluid">
        @using (Html.BeginForm("Index", "Activos"))
        {
            <div class="span9">
                @Html.DropDownList("Contrato", (SelectList)ViewBag.ID_CONTRATO, "Seleccione un Contrato", new { @class = "span12", onchange = @"var form = document.forms[0]; form.submit();" })
            </div>
            <div class="span1">
                <button type="submit" class="btn btn-danger span12"><i class="icon-refresh"></i></button>
            </div>
            <div class="span2">
                @Html.ActionLink("Agregar", "Create", @controlador, new { @class = "btn btn-danger span12" })
            </div>
        }
    </div>
</div>
</div>
@Html.Partial("Shared/_GridActivos", (IEnumerable<SAC.Models.CAT_ACTIVOS>)ViewBag.listado)

@section JavaScript{
@Scripts.Render("~/Scripts/DataTables/js")
}
@model IEnumerable
@{
string controlador=ViewContext.RouteData.Values[“Controller”].ToString();
}
@科长{
}
@{
ViewBag.Title=“Activos”;
}
@视图包。标题
@使用(Html.BeginForm(“Index”,“Activos”))
{
@Html.DropDownList(“contato”,(SelectList)ViewBag.ID_contato,“seleccioneuncontato”,new{@class=“span12”,onchange=@“var form=document.forms[0];form.submit();”)
@ActionLink(“Agregar”,“Create”,“controlador,new{@class=“btn btn danger span12”})
}
@Html.Partial(“Shared/_GridActivos”,(IEnumerable)ViewBag.listado)
@节JavaScript{
@Scripts.Render(“~/Scripts/DataTables/js”)
}

这是TempData很方便的一种情况,可以在重定向期间存储该信息

TempData["MyId"] = t.ID;
return RedirectToAction("Index");
然后,在索引操作中:

if (TempData["MyId"] != null) {
    // Retrieve ID and object from the database to load the model.
} else {
    // Your existing code.
}

根据模型的大小和可序列化性,您甚至可以将创建的模型对象存储在TempData中,并在索引中检索该对象。

这是TempData很方便的一种情况,可以在重定向期间存储该信息

TempData["MyId"] = t.ID;
return RedirectToAction("Index");
然后,在索引操作中:

if (TempData["MyId"] != null) {
    // Retrieve ID and object from the database to load the model.
} else {
    // Your existing code.
}

根据模型的大小和可序列化性,您甚至可以在TempData中存储创建的模型对象,并在Index中检索该对象。

非常感谢您的帮助。问题解决了。非常感谢你的帮助。问题解决了。