如果你想完成这项工作,你必须使用一个表格。您可以在标准或 AJAX 表单之间进行选择,但为了清楚起见,我将坚持使用标准。
像这样的东西:
@using(html.BeginForm("MyAction", "SomeController")){
<div data-role="fieldcontain" class="inline-toggle">
<label for="autoreload">Yes or No? <a href="#"><img class="smallInfo" src="/sites/dev-demo/mobile/assets/images/info@2x.png"></a>:</label>
<select name="autoreload" class="togglehidden" id="autoreload" data-role="slider" data-hidden-id="#autohidden">
<option value=@(Model.IsTrue = false)>No</option>
<option value=@(Model.IsTrue = true)>Yes</option>
</select>
<div id="autohidden" class="hide">
<input type="text" name="thevalue" id="value" value="@Model.TheValue" placeholder="">
</div>
</div>
<input type="submit" value="Submit" />
}
在你的控制器中
public class SomeController : Controller {
[HttpPost]
public ActionResult MyAction(FormCollection form){
var toggle = form["autoreload"];
var thevalue = form["value"];
}
}
或者您创建一个自定义类
public class MyModel {
public bool AutoReload {get; set;}
public string TheValue {get; set;}
}
并在您的视图中使用它
@model MyModel
@using(html.BeginForm("MyAction", "SomeController")){
<div data-role="fieldcontain" class="inline-toggle">
<label for="autoreload">Yes or No? <a href="#"><img class="smallInfo" src="/sites/dev-demo/mobile/assets/images/info@2x.png"></a>:</label>
// without razor syntax
<select name="autoreload" class="togglehidden" id="autoreload" data-role="slider" data-hidden-id="#autohidden">
<option value=@(Model.IsTrue = false)>No</option>
<option value=@(Model.IsTrue = true)>Yes</option>
</select>
<div id="autohidden" class="hide">
@Html.EditorFor(x => x.TheValue) // with razor syntax
</div>
</div>
<input type="submit" value="Submit" />
}
并像这样构造你的控制器:
public class SomeController : Controller {
[HttpPost]
public ActionResult MyAction(MyModel model){
var toggle = model.AutoReload;
var thevalue = model.TheValue;
}
}
虽然这都是 C#/ASP.NET MVC 4 101,但您可以找到很多关于此的信息。我建议查看这些视频!