我需要一些帮助。我使用带有JavaScript和Knockout的ASP.NET MVC4编写了小应用程序,但无法将数据从JavaScript发送到MVC Controller,反之亦然。例如,JS的部分如下所示:
self.Employer = ko.observable();
self.AboutEmployer = function (id) {
$.ajax({
Url.Action("GetEmployer", "Home")
cache: false,
type: 'GET',
data: "{id:" + id + "}",
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (data) {
self.Employer(data);
}
}).fail(
function () {
alert("Fail");
});
};
在ASP.NET MVC家庭控制器中,我通过ID获得用人单位并将其返回为Json:
public JsonResult GetEmployer(int id)
{
var employer = unit.Repository<Employer>().GetByID(id);
return Json(employer, JsonRequestBehavior.AllowGet);
}
我的视图返回另一个控制器(Home / KnockOutView)。“我的视图”还获得了另一个对象,并且根据接收到的内容而具有不同的外观:
...
<b>About Company: </b><a href="#" data-bind="click: $root.AboutEmployer.bind($data, Vacancy().EmployerID)">
<span data-bind=" text: Vacancy().Employer"></span></a>
<div data-bind="if: Vacancy">
<div id="VacancyDescription"><span data-bind="text:DescriptionShort"></span>
</div>
</div>
<div data-bind="if: Employer">
<div data-bind="text: Employer().EmployerDescription"></div>
</div>
一切正常,我在JS中收到了Vacancy和Employer对象,并使用Knockout在HTML中显示了它,但是我的URL一直保持不变!但是我想在获得空缺或雇主时一直更改URL。例如,如果我想使用方法GetEmployer来获取Employer,URL应该看起来像这样:〜/ Home / GetEmployer?id = 3如果我更改Url.Action("GetEmployer", "Home")
了url: window.location.href = "/home/GetEmployer?id=" + id
URL上的此代码字符串,则将被更改,但是Controller返回一个Json对象,并且在窗口中以Json格式显示它。请帮助我,更改URL并从URL获取Controller中的信息。谢谢。
尝试以下代码,希望对您有所帮助
此代码适用于%100,请根据您的情况在文本框下方进行更改
的HTML
<input type="text" id="UserName" name="UserName" />
<input type="button" onclick="MyFunction()"value="Send" />
<div id="UpdateDiv"></div>
Javascript:
function MyFunction() {
var data= {
UserName: $('#UserName').val(),
};
$.ajax({
url: "/Home/GetEmployer",
type: "POST",
dataType: "json",
data: JSON.stringify(data),
success: function (mydata) {
$("#UpdateDiv").html(mydata);
history.pushState('', 'New URL: '+href, href); // This Code lets you to change url howyouwant
});
return false;
}
}
控制器:
public JsonResult GetEmployer(string UserName)
{
var employer = unit.Repository<Employer>().GetByID(id);
return Json(employer, JsonRequestBehavior.AllowGet);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句