MVC读取标签值并在按钮点击时传递给控制器

时间:2016-06-22 15:05:34

标签: jquery asp.net-mvc asp.net-mvc-4 razor model-view-controller

我有一个MVC剃刀视图,部分视图。在主视图中单击按钮后,我必须触发控制器操作。我需要将label值传递给此操作。所以我想我可以在填充所有HTML后使用jQuery获取标签值。这个label处于局部视图中,我的脚本位于主视图中。即使在页面完全加载后,我仍然在警报中获得空值。这是我使用的代码:

<input type="button" class="ViewInfo-success" value="View History" onclick="return HistoryResponse()" />
function HistoryResponse() {
    var mac = $('#cmmac').html();
    alert("alert1" + mac);

    try {
        location.replace('/HistoryLookup/GetHistory' + mac);
    }
});

部分视图中的标签代码:

<div class="col-lg-2">
   @Html.Label("MAC Seria:", new { id = "cmmac" })
</div>

<div class="col-lg-2">
   @Html.DisplayFor(x => x.HistoryDO.MACSerial)
</div>

还有其他方法可以达到这个目的吗?请输入任何想法。

2 个答案:

答案 0 :(得分:0)

以下对我有用:

点击前(编辑):

BeforeClick

点击(修改):

OnClick

发布点击网址(编辑):

PostClick

查看(索引):

<input type="button" class="ViewInfo-success" value="View History" onclick="HistoryResponse()" />

@Html.Partial("MACSerialPartial")

<script>
    function HistoryResponse() {
        var mac = document.getElementById('cmmac').innerText;
        alert("alert1" + mac);
        location.replace('/HistoryLookup/GetHistory?id=' + mac);
    };
</script>

带编辑的部分视图(MACSerialPartial):

@model mvc_read_label_value.Models.Product

<div class="col-lg-2">
    <p>MAC Serial:</p>
</div>

<div class="col-lg-2">
    <p id="cmmac">@Model.HistoryDO.MACSerial</p>
</div>

<强>型号:

public class Product
{
    public History HistoryDO { get; set; }
}

public class History
{
    public string MACSerial { get; set; }
}

带索引操作方法的控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        Product product = new Product() {HistoryDO = new History(){MACSerial = "TestSerial"} };
        return View(product);
    }
}

HistoryLookup Controller:

public class HistoryLookupController : Controller
{
    public ActionResult GetHistory(string id)
    {
        return View(); // TODO: need to make a view corresponding to this action
    }
}

答案 1 :(得分:0)

所以我所要做的就是将模型中的macid值存储在这样的隐藏字段中。

@Html.HiddenFor(x => x.Model.historyDO.MACSerial, new { id = "macId", name = "macId" })

主视图上的按钮

<input type="button" class="ViewInfo btn btn-success" value="View History" onclick="return HistoryResponse()" />

在historyresponse()方法中,通过隐藏字段ID获取值

function HistoryResponse() {
        var params = '?MacId=' + $("#macId").val();
        alert("alert3" + params); [![enter image description here][1]][1]
        try {
            location.replace('/HistoryLookup/GetHistory' + params);
        }
        catch (exception) { }
    }

并发布行动。

[HttpGet]
public ActionResult GetHistory(string macId)
{    
var model = Repository.GetHistory(macId);
return View("HistoryLookupResponse", model);

}