我有这样的示例代码:
<div class="cart">
<a onclick="addToCart('@Model.productId');" class="button"><span>Add to Cart</span></a>
</div>
<div class="wishlist">
<a onclick="addToWishList('@Model.productId');">Add to Wish List</a>
</div>
<div class="compare">
<a onclick="addToCompare('@Model.productId');">Add to Compare</a>
</div>
Run Code Online (Sandbox Code Playgroud)
如何编写JavaScript代码来调用控制器操作方法?
在ASP.NET MVC3应用程序中,我在视图中有一个按钮.
单击该按钮时,将调用一个函数,并进行jquery ajax调用以将项目保存到数据库
function SaveMenuItems() {
var encodeditems = $.toJSON(ids);;
$.ajax({
type: 'POST',
url: '@Url.Action("SaveItems", "Store")',
data: 'items=' + encodeditems + '&storeKey=@Model.StoreID',
complete: function () {
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想要的是将项目保存到数据库后我想重定向到另一个视图.(重定向到行动)
我怎样才能做到这一点?
我试着return RedirectToAction("Stores","Store")在SaveItems函数末尾的控制器中使用.但它没有用
我也尝试添加window.location.replace("/Store/Stores");ajax调用的完整功能,但也没有工作
任何帮助是极大的赞赏
非常感谢
我目前正在使用以下代码对我的控制器执行ajax调用:
$.ajax({
type: "POST",
url: "@Url.Action("uploadImage", "Item")",
data: '{ "imageData" : "' + image + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (success) {
alert('Success ' + success.responseText);
},
error: function (response) {
alert(response.responseText);
}
});
Run Code Online (Sandbox Code Playgroud)
这是控制器:
[HttpPost]
public ActionResult uploadImage(string imageData)
{
string imageName = Guid.NewGuid().ToString();
try
{
ProductManager pm = new ProductManager();
pm.AddNewProduct(imageName);
}catch(Exception e)
{
writeToLog(e);
}
return Json(new { success = imageName }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
它到达控制器并且AddNewProduct函数成功运行.问题是我希望它返回在控制器中创建的图像名称.这也可以,但是它也会返回我完整的html页面.我在成功时发出警告,并在发生错误时发生错误,但不知怎的,它总是在错误中出现以下警告:
它显示了我需要的价值,但为什么它也会返回我的完整HTML?
我在ASP.NET MVC和发送AJAX帖子时遇到了一个奇怪的问题.我在页面上有一个id为'lnkGetExpirDates'的锚标记.当用户点击它时,我试图简单地将这个硬编码数据发送到我的控制器,这样它就可以将它作为参数使用并将结果返回给页面.
但是,在控制器中,参数始终为空/默认值.请参阅下面的代码,如果我犯了一个愚蠢的错误,请告诉我.
这是我的AJAX帖子:
$("#lnkGetExpirDates").click(function () {
e.preventDefault();
var data = {
StartDate: "1/19/2016",
EndDate: "4/19/2016",
ProductType: "New",
Count: 1
};
$.ajax({
url: '/Products/GetExpirationDates',
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
dataType: 'html',
success: function (data) {
$('#ExpirationDates').val(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是我的控制器的动作方法:
// POST: Product/GetExpirationDates
[HttpPost]
//[ValidateAntiForgeryToken]
public IActionResult GetExpirationDates(GetExpirationDatesViewModel vm)
{
// TODO: Get expiration dates and return them in the response
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是GetExpirationDatesViewModel:
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; …Run Code Online (Sandbox Code Playgroud) 我目前正在使用ASP.NET Core 2和Bootstrap构建一个简单的网站。该站点将部署到暂存和生产环境中,因此我希望能够使用可以在Azure中设置的配置键/值对来配置某些设置。我也希望这些值可以在Javascript中使用。
感谢这篇有用的博客文章,我已经找到了如何创建AppSettings类并填充它的方法。这篇文章还介绍了使用依赖注入从RazorPage模型访问AppSettings。
我的appsettings.json文件
{
"AppSettings": {
"TestProperty": "Test_Property"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
Run Code Online (Sandbox Code Playgroud)
自动绑定我在Startup.cs中的AppSettings类
services.Configure<AppSettings>(Configuration.GetSection(nameOf(AppSettings)));
Run Code Online (Sandbox Code Playgroud)
通过依赖项注入访问设置:
public class HomeModel : PageModel
{
private readonly AppSettings _appSettings;
public string TestProperty {get; set;}
public HomeModel(IOptions<AppSettings> appSettings)
{
_appSettings = appSettings.Value;
}
public IActionResult Index()
{
TestProperty = _appSettings.TestProperty;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在要在javascript中使用此属性的页面上,执行以下操作以创建具有以下设置的javascript属性:
<script type="text/javascript">
var testProperty = '@Model.TestProperty';
</script>
Run Code Online (Sandbox Code Playgroud)
这可以工作,但理想情况下,我不需要配置每个页面以使用此依赖项注入并TestProperty在每个页面上公开我的代码。我希望能够将上面的代码放到其中,以_Layout.cshtml呈现每个页面的正文(或其他适当位置)的方式,这样我可以创建一个javascript变量供每个页面使用。
我曾考虑过使用BaseViewModel继承所有页面的模型,但是对此进行试验并没有带来任何有用的结果(只是一个例外)。
您将如何通过只能配置一次的配置设置创建javascript属性?
我试图用AJAX调用MVC Controller动作传递一些参数.
我有时在这个应用程序中这样做,它工作正常.
我不知道为什么只有这一个不起作用.
function excluirDetalhe(button, tab) {
var index = $(button).closest('tr').index();
var myTable = document.getElementById(tab);
var id = myTable.rows[index].cells[0].innerHTML.trim();
$('#' + tab + ' tr:eq(' + index + ')').remove();
$.ajax({
traditional: true,
url: "entidades/gravaCookie",
type: 'post',
data: { id: id, detalhe: "E" },
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器方法:
public void gravaCookie(string id, string detalhe)
{
string key = "een_id";
if (detalhe.Equals("E"))
key = "een_id";
if (detalhe.Equals("C"))
key = "eco_id"; …Run Code Online (Sandbox Code Playgroud) 我在mvc 4实体框架中有一个项目,并使用ajax调用控制器方法.我的问题是当我使用我的app本地时,url是"控制器/方法"但是当我发布时我必须将URL更改为" http:// domain/appName/Controller/Method "
我该怎么做才能获得ajax url的绝对路径?我的ajax是在js文件上,我不能使用像html.actionlink这样的函数
例:
$("#btnAnswer").click(function () {
$.ajax({
url: "http://domain/appName/Controller/method/",
//url: "/Controller/method/",
data: { answer: $("#answer").val(), question_id: $("#question_id").val(), answer_id: $("#answer_id").val() },
success: function (result) {
alert(result);
}
}).error(function () {
}).fail(function () {
});
});
Run Code Online (Sandbox Code Playgroud) ajax ×4
jquery ×4
asp.net-mvc ×3
razor ×3
asp.net ×2
c# ×2
javascript ×2
asp.net-core ×1
html ×1
redirect ×1