使用'return PartialView(..)将值从控制器返回到局部视图

时间:2014-07-15 00:09:11

标签: asp.net-mvc

我正在开展一个项目,要求我实现以下目标:

  1. 从局部视图的下拉菜单中进行选择
  2. 将所选值的ID传递给我的控制器中的操作方法
  3. 使用该ID查询数据库以获取新值
  4. 在同一部分视图的文本框中返回并显示该值
  5. enter image description here

    例如,如果我选择不同的基金,那么该基金的基金代码将显示在文本框中。

    这是我局部视图中的相关代码。我在这里要做的是从模型中获取值(如果存在)或从查询中获取默认值。

     protected void Page_Load(object sender, EventArgs e)
    {
    
        var qry = (from id in _db.myTable
                select new
                {
                    id.Code,
    
                }).FirstOrDefault();
    
        _changedId = Model.Code ?? qry.Code;
    }
    
    
    
    <td><%: Html.DropDownListFor(fn1 => Model.Id, _val, new { @id = myId" } )%>
                    </td>
                    <td class="labels"> 
                        Value:
                    </td>
                    <td>
    <%= Html.TextBoxFor(fc => Model.Value, new { @Value= _changedId, @readonly = true }) %>
    </td>
    

    注意:我知道这不是MVC的最佳做法,但这就是项目的编写方式。

    以下是行动方法:

    public ActionResult GetFundCode(MyModel fnc)
        {
            int fid = fnc.Id;
    
            var qry = (from tab in _db.AnotherTable
                         where tab.Id == fid
                select tab).FirstOrDefault();
    
            fnc.newCode = qry.Code;
    
            return PartialView("~/Views/TransactionCommonInputs/FromToFundSearchSelector.ascx",fnc);
        } 
    

    我的动作方法“工作”,因为它在模型“fnc”中返回正确的值。我得到了新值并将其分配到上面发布的局部视图的页面加载部分中,并在此处再次指定:

    _changedId = Model.fundCode ?? qryFundCode.FundCode;
    

    运行VS2010调试器显示从控制器返回到部分视图的值是正确的。那是当我将鼠标悬停在'_changedValue'上时,会为其分配我想要的值:

    <%= Html.TextBoxFor(fc => Model.Value, new { @Value= _changedId, @readonly = true }) %>
    </td>
    

    但是,运行代码时显示的值将恢复为之前的值。

    我希望这比我的第一篇文章更容易理解。

0 个答案:

没有答案