我想<int,int>通过Ajax帖子将类型字典传递给我的控制器.这里的主要原因是这里的帖子可能有1-3个键值对(这些值在编译时都不知道),并且将来可能会达到5.
同样在帖子中我必须传递一些其他数据,例如Id和name,这些数据都正常.
我将如何在javascript中构建这个词典,然后通过JQuery帖子发送它,最后在控制器上接收它来处理?
编辑2:我决定用每个值的帖子解决这个问题,而不是试图传递字典.
编辑:这是我的功能来源,所以你可以看到我在尝试:
function BindAddMenuItem() {
$(".AddMenuItem").click(function (e) {
e.preventDefault();
//get header id from link by removing addmenuitem from this.id
var currentId = $(this).attr("id").replace("AddMenuItem", "");
//get itemnumber, itemname, itemdetails from textboxes with same header id
var restaurantId = jQuery.trim($("#RestaurantId").val());
var itemNumber = jQuery.trim($("#ItemNumber" + currentId).val());
var itemName = jQuery.trim($("#ItemName" + currentId).val());
var itemDetails = jQuery.trim($("#ItemDetails" + currentId).val());
var costs = new Object();
//select all textboxes with class "Header" + currentId
$(".Header" + currentId).each(function (i) {
var …Run Code Online (Sandbox Code Playgroud) 所以我有一个我正在开发的ASP.NET MVC网站,从来没有一个像样的部署策略,因此进行更改,特别是数据库方案可能涉及很多步骤和时间.
以下是我正在寻找的步骤,并希望了解如何操作或工具(最好免费).随意指出任何遗漏的步骤或我做错的事情.
编辑:我将列出我用来解决每个阶段的工具
我很幸运,我的网站在凌晨1点到4点之间没有任何访问者所以这一切都可以在不需要登台服务器等的情况下完成吗?
我知道我的问题很长,但这可能对很多人有所帮助.
我试图将一些文本从文本框传递到控制器,以获得JSON结果
function invokeAction() {
var searchText = $("#SearchTextBox").val();
// Invoke MVC controller action
$.getJSON("/Home/Results/" + searchText, bindResults);
}
Run Code Online (Sandbox Code Playgroud)
如果我在此处发出提醒,我可以看到searchText肯定有一个值,但是当我在此控制器操作上设置一个断点时:
public ActionResult Results(string search)
{
var r = from t in db.Restaurants
where SqlMethods.Like(t.Name, "%" + search + "%") || SqlMethods.Like(t.Postcode, search + "%") || SqlMethods.Like(t.CuisineType.Type, search + "%")
orderby t.Name ascending
orderby t.Rating descending
orderby t.NumOfViews
descending
select t;
return Json(r.ToList());
}
Run Code Online (Sandbox Code Playgroud)
传入的字符串为null,但是当我在调试器中检查http上下文时,我的searchtext是url的一部分.
由于这是null,查询不返回任何结果.
我在这里错过了什么吗?
我知道视图中不应该包含代码,但在我正在处理的项目中,我在视图中有很多逻辑.
我的主页有
<% Html.RenderPartial("SearchResults"); %>
Run Code Online (Sandbox Code Playgroud)
现在在局部视图中,我有很多这样的逻辑;
<div id="RestaurantsList">
<%if (Model.restaurantsList.Count() > 0)
{
foreach (var item in Model.restaurantsList)
{ %>
<% Html.RenderPartial("SearchResult", item); %>
<%
} %>
<%
}
else
{
Html.RenderPartial("NoResults");
} %>
Run Code Online (Sandbox Code Playgroud)
现在我可以让家庭控制器返回一个基于列表为空的不同视图,但我真的不想这样,因为索引视图有一些我想要显示的东西,无论是否有结果.
我能想到的另一件事就是将它封装在一个辅助方法中,比如Html.SearchResults.但是我需要帮助器来为每个搜索结果调用renderPartial.这似乎不是关心的干净分离.
我仍然需要在局部视图中使用第一个if语句.
你最好怎么处理这个?
我希望在我的单元测试项目中引用我的数据库文件.这是一个ASP.NET MVC应用程序.
请注意:我知道我不应该在我的单元测试中访问数据库,但这是为了快速修复我需要通过的一个测试.
在下一个里程碑之后,我将嘲笑数据库访问方法等.
所以这是我的mvc app web config中的连接字符串和单元测试ap.config文件
<add name="DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我收到一个错误:
Test method
ED.Tests.Controllers.CandidateControllerTest.PersonalDetailsStepPostShouldRedisplayIfNoSurnameSupplied
threw exception: System.Data.SqlClient.SqlException:
An attempt to attach an auto-named database for file C:\Users\Desktop\ED\TestResults\LAPTOP-D 2009-07-22 18_16_20\Out\DB.MDF failed.
A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
Run Code Online (Sandbox Code Playgroud)
在我看来,连接字符串是错误的,但我不知道如何正确设置路径.我试过添加\ ..\..和目录名等.
我想在我的MVC应用程序中实现类似于此网站的实时搜索,当您输入问题并且结果与http://www.krop.com/上的搜索类似或类似时
我有搜索代码全部工作和结果更新.我只需要知道如何将AJAX添加到MVC框架(我知道这个站点是使用它构建的),这样当我输入结果时会更新.
我有这一切都在普通的ASP.NET Forms应用程序中工作.
我正在尝试用测试开始一个新的MVC项目,我认为最好的方法将有2个数据库.1用于测试和1用于我运行应用程序并使用它(也测试真的因为它还没有生产).
对于测试数据库,我考虑在测试设置方法中放置create table脚本和填充数据脚本,然后在拆卸方法中删除所有这些.
我将使用Linq to SQL但我不认为这会允许我这样做吗?
如果我想这样做,我是否必须去ADO路线?或者我应该只使用模拟对象并将数据存储为数组或什么?
关于最佳实践的任何提示?
杰夫是如何为StackOveflow做这件事的?
我有一个导航栏,使用JQuery在注册过程的4个阶段之间移动.
但是,我需要确保所有内容都与JS禁用.
所以我在页面底部有这4个链接图像,我需要这样,如果单击它,它会发布到当前操作,这样我就可以保存所有表单数据,然后重定向到下一个阶段.
重定向很简单,因为我只是在路由或表单中传递参数,但我不知道如何使用动作链接发布方法.
我可以为图像背景等放置4个不同的提交按钮,但这感觉不对.
有任何想法吗?
我正在使用Google Maps API来获取2个英国邮政编码之间的距离.
var yourPostcode = $("#YourPostcode").val();
var restaurantPostcode = $("#Postcode").val();
var point1 = GetPointFromPostcode(yourPostcode);
var point2 = GetPointFromPostcode(restaurantPostcode);
var distance = point1.distanceFrom(point2, 3959).toFixed(1);
Run Code Online (Sandbox Code Playgroud)
但是,GetPoint函数异步调用Google API,因此在计算时间距离时,第1点和第2点尚未设置(我相信这是发生了什么?)
我还在每个语句之后发出警报来检查变量的值,并且这样做我得到了正确的值,等待我点击确定必须给它足够的时间来获得结果吗?虽然它不再这样做了:(
这是获取点功能
function GetPointFromPostcode(postcode) {
var point;
localSearch.execute(postcode + ", UK");
if (localSearch.results[0]) {
var resultLat = localSearch.results[0].lat;
var resultLng = localSearch.results[0].lng;
point = new GLatLng(resultLat, resultLng);
} else {
$(".PostcodeError").append("Postcode Invalid");
}
return point;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以在本地搜索时设置回调,以便在结果返回时调用,但问题是这里有2次搜索.
我想要的是在BOTH搜索返回结果后才调用计算距离线.
你知道怎么做吗?
谢谢
我有一个搜索页面,如果列表中有结果,它会将此列表传递给视图.但是,如果没有结果,我想将搜索到的文本发送到找不到结果的视图.我该怎么做?
我在我的一个aspx页面中有一个web方法:
[WebMethod]
public static string AddDebt(int userId, int type, string description, float amount)
Run Code Online (Sandbox Code Playgroud)
在aspx页面中我有JQuery
$(".addDebt").click(function (e) {
e.preventDefault();
var userId = $("[id$='txtUserId']").val();
var type = $("[id$='ddlExistingDebtType']").val();
var description = $("[id$='txtExistingDebtLender']").val();
var amount = $("[id$='txtExistingDebtAmount']").val();
var results = new Array();
results.push({ userId: userId });
results.push({ type: type });
results.push({ description: description });
results.push({ amount: amount });
var dataString = JSON.stringify(results);
$.ajax(
{
type: "POST",
url: "register_borrower_step4.aspx/AddDebt",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$(".pDebtsTable").text(result);
}
});
}); …Run Code Online (Sandbox Code Playgroud) 我已经解决了这个问题2天了,这是一个容易出问题的问题,即使将其与其他有效的项目进行比较,我也无法看到代码中的错误.
你能帮忙吗?
我正在使用ASP.NET成员资格和使用ASP.NET MVC生成的帐户控制器类来处理我网站的帐户部分.
但是,当注册并且用户将某些字段留空时,输入的文本在重新显示页面时不会显示.
这是注册后发布行动
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(FormCollection formValues)
{
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
if (ValidateRegistration(formValues))
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(formValues["username"], formValues["password"], formValues["email"]);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuth.SignIn(formValues["username"], false /* createPersistentCookie */);
return RedirectToAction("CreateCustomer", "Account");
}
else
{
ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View();
}
Run Code Online (Sandbox Code Playgroud)
和ValidateRegistration功能
private bool ValidateRegistration(FormCollection formValues)
{
if (String.IsNullOrEmpty(formValues["userName"]))
{
ModelState.AddModelError("username", "You must specify a username.");
}
if …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×10
jquery ×3
ajax ×2
asp.net ×2
javascript ×2
ajax.net ×1
c# ×1
deployment ×1
dictionary ×1
geocoding ×1
google-maps ×1
json ×1
linq ×1
livesearch ×1
refactoring ×1
sql ×1
tdd ×1
unit-testing ×1
webmethod ×1