2011-06-09 33 views
0

我在一个视图中有一个下拉菜单,我必须在其他视图中使用此下拉菜单的选定值。视图之间传递参数 - MVC-3 - 不是TempData方法

我不想使用Tempdata方法,因为它不是最佳做法。

有没有比这更好的方法。

请给出最佳实践方案。

谢谢 哈日

+0

你能不能给我们的两个视图是如何关联的一个更好的描述?它们都是容器视图中的部分视图吗?它们是否被多个HTTP请求分开? – 2011-06-09 13:04:43

+0

他们是完全不同的意见。一个视图名称是AddAbsence和其他ViewName是AmendAbsence。 – 2011-06-09 13:08:27

+0

当您从第一个下拉列表中发布值时,是否从该控制器操作呈现下一个视图(需要第一个下拉值的视图)? – 2011-06-09 13:15:42

回答

0

我可以修改,这是你为我提供了一个更大的图片(阅读:更多的代码)的东西已经在您的意见

第一视图(您List<SelectListItem>可能会有所不同)

@using (Html.BeginForm("Step2", "Silly")) { 
    @Html.DropDownList("NameOfDropDown", new List<SelectListItem>() 
    { 
     new SelectListItem() 
     { 
      Text = "Label 1", 
      Value = "1" 
     }, 
     new SelectListItem() 
     { 
      Text = "Label 2", 
      Value = "2" 
     } 
    }) 
    <input type="submit" value="Submit" /> 
} 
在控制器

然后

public class SillyController : Controller 
{ 
    [HttpPost] 
    public ActionResult Step2(string NameOfDropDown) 
    { 
     // if the only value being passed is a string, you'll need 
     // to wrap it in something like a view model class 
     return View(new Step2ViewModel() { MyValue = NameOfDropDown }); 
    } 
} 

public class Step2ViewModel() 
{ 
    public string MyValue { get; set; } 
} 

而在第二个观点,Step2.cshtml(假设剃刀)

@model Yournamespace.Step2ViewModel 

<div>@Model.MyValue</div>