我有一个使用mvc的级联溺水.如果您在第一个下拉列表中选择一个国家/地区,则应该相应地填充第二个国家/地区的州.
目前,一切似乎都很好,我得到Json的回应(看到它使用F12工具),它看起来像 [{ "stateId":"01", "StateName": "arizona" } , { "stateId" : "02", "StateName":"California" }, etc..] ..
我想知道如何填充second-dropdown这些数据.我的第二个下拉列表是" StateID".任何帮助将不胜感激.
以下是用于从服务器生成JSON响应的代码:
[HttpPost]
public JsonResult GetStates(string CountryID)
{
using (mdb)
{
var statesResults = from q in mdb.GetStates(CountryID)
select new Models.StatesDTO
{
StateID = q.StateID,
StateName = q.StateName
};
locations.statesList = stateResults.ToList();
}
JsonResult result = new JsonResult();
result.Data = locations.statesList;
return result;
}
Run Code Online (Sandbox Code Playgroud)
下面是客户端HTML,我的剃刀代码和我的脚本.我想在" success:" 内部编写一些代码,以便dropdown使用JSON数据填充States .
<script type="text/javascript">
$(function () {
$("select#CountryID").change(function (evt) {
if …Run Code Online (Sandbox Code Playgroud) 我在MVC视图中有一个表格,显示员工详细信息.我想添加一个编辑功能,但不是在新页面中打开它,我想使用bootstrap模式显示它.(http://twitter.github.com/bootstrap/javascript.html#modals)
我不认为我必须使用ajax,因为页面上已有数据.我想我需要一些jquery或razor代码将所选员工的数据传递给bootstrap模式,然后在同一个屏幕上弹出.以下是我的代码.任何帮助将不胜感激.谢谢
@Foreach(var item in Model.Employees)
{
<tr>
<td>@User.Identity.Name
</td>
<td>@item.FirstName
</td>....other columns
<td><a href="#myModal" role="button" class="btn" data-toggle="modal">Edit</a>
<td>
</tr>........other rows
}
**Bootstrap Modal**
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Edit Employee</h3>
</div>
<div class="modal-body">
<p>Selected Employee details go here with textbox, dropdown, etc...</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 这是一个Plunker示例.[根据以下答案更新了plunk]
如何禁用一两个项目的排序.例如,第1项和第3项,那么用户无法移动这两项?
我试过了
$scope.sortableOptions = {
disabled:true,
};
Run Code Online (Sandbox Code Playgroud)
在sortableOptions中,但禁用整个列表上的排序.
我正在寻找类似的东西
<div ui-sortable="sortableOptions" ng-model="list">
<div ng-repeat="item in list">
<div ng-switch on="item.text">
<div ng-switch-when="Item 1" >
<div ui-sortable="sortableOptions.disabled=true">{{item.text}} - Sorting disabled</div>
</div>
<div ng-switch-default>
<div>{{item.text}} - Sorting enabled</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想使用redirectToAction()方法传递多个对象.下面是我要重定向到的动作结果.
public ActionResult GetEmployees(Models.Department department, Models.Category category, Models.Role role)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
我想做类似下面的事情
public ActionResult test()
{
Models.Department dep = new Models.Department();
Models.Category cat.......etc
return RedirectToAction("GetEmployees", dep, cat, role); }
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激 - 谢谢
更新
我可以使用类似的东西吗?
Models.Department dep = new Models.Department() { DepId = employee.DepartmentId };
Models.Category cat = new Models.Category() { CatId = employee.JobCategoryId };
Models.Role title = new Models.Role() { RoleId = employee.JobTitleId };
return RedirectToAction("GetEmployees", new { department = dep, category = cat, role = title });
Run Code Online (Sandbox Code Playgroud) 目前,我可以先选择年份,然后选择月份,然后选择日期.但是,我只需要访问月份和年份.我不知道如何禁用日期选择器选项.
另外,我想在日期选择器中删除所有页脚按钮(今天,清除等).我怎样才能做到这一点?
我正在寻找类似'$ scope.showweeks = false;'的东西.
以下是我的Plunker示例
请随时向我索取任何可用的文件.到目前为止,我只能找到
http://angular-ui.github.io/bootstrap/
谢谢
我最近一直在学习AngularJs,并且想知道是否有办法解决以下问题.
我有一个名为cardetails.html的页面,显示一些汽车详细信息,如名称,品牌,型号等.数据从查看会话存储的服务填充.因此,当应用程序第一次运行时,只能看到"添加"链接.单击"添加"将导航用户到名为"CarDetailsForm.html"的页面,其中包含要添加数据的表单.
提交表单后,数据将存储在会话存储中,用户将被导航回cardetails.html,此时车辆详细信息将与编辑链接一起显示.现在,我需要找到一种方法来重用"CarDetailsForm.html"进行编辑.当用户单击编辑链接时,表单应与表单元素中的填充数据一起打开.我完成了大部分工作,但不确定如何正确实现"编辑"功能.我发现以下链接很有用,但我试图避免两次创建相同的表单元素.
另一个问题是,当用户在编辑后立即从cardetails.html"返回"到"CarDetailsForm.html"时,数据仍应保留在表单上.我怎样才能做到这一点?
此外,我不确定是否需要使用自定义指令来解决此问题.任何帮助或建议将不胜感激.谢谢
使用解决方案更新代码(只需使用模型绑定)
以下是cardetails.html的标记
<div ng-controller="carDetailsCtrl">
<div>Car Details</div>
<div ng-show="hasData">
<ul>
<li>{{carDetails.name}}</li>
<li>{{carDetails.make}}></li>
</ul>
</div>
<div ng-hide="hasData"><a href="#carDetailsForm">add</a></div>
<div ng-show="hasData"><a href="#carDetailsForm">edit</a></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CarDetailsForm.html
<form ng-submit="submit()" ng-controller="carDetailsFormCtrl">
<input type="text" id="name" required="required" ng-model="formData.name">
<input type="text" id="make" required="required" ng-model="formData.make">
<input type="submit" id="submit" value="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
以下是我的脚本.
app.config([
'$routeProvider', function ($routeProvider) {
$routeProvider.
when('/carDetailsForm', { templateUrl: 'CarDetailsForm.html' }).
//when('/carDetailsForm:carDetails', { templateUrl: 'CarDetailsForm.html' }).
otherwise({
templateUrl: 'cardetails.html'
});
}
]);
app.factory('carDetailsService', function () {
return {
get: …Run Code Online (Sandbox Code Playgroud) 请参阅下面的屏幕截图.我从控制器返回Json结果来填充级联下拉列表.从visual studio运行时,应用程序运行得非常好,但是当从iis服务器运行时,下拉列表根本不会被过滤(抛出404).我真的很困惑.任何帮助,将不胜感激.谢谢.
在pic中,顶部的那个是从VS运行时,底部的那个是从iis通过Intranet运行时.
我已根据要求附加了下面的代码,但正如我上面提到的,从Visual Studio运行时它完全正常.
调节器
[HttpPost]
public JsonResult FilterByDivision(string divisionId)
{
try
{
using (ctx)
{
var SubDivResults = (from q in ctx.Test
where q.divId== divisionId
select new Models.SubDivisionDTO
{
SubDivID = q.subdivId,
SubDiv = q.SubDiv
}).Distinct().ToList();
ajaxLookup.SubDiv = SubDivResults;
}
JsonResult result = new JsonResult();
result.Data = ajaxLookup;
return result;
}
catch (Exception)
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
jQuery的
//按部门筛选
$(function () {
$("select#DivisionId").change(function (evt) {
if ($("select#DivisionId").val() != "-1") {
$.ajax({
url: "/AjaxDropDown/FilterByDivision",
type: 'Post',
data: { divisionId: …Run Code Online (Sandbox Code Playgroud) 我想使用按钮而不是ActionLink重写下面的代码.任何帮助将不胜感激.谢谢.
@Html.ActionLink("Test Link","Index", "Home", new { id = item.id})
Run Code Online (Sandbox Code Playgroud)
是否有可能写下面的内容或有更好的方法?我也不确定语法,所以请随时纠正它.
<input type="button" value="Submit" onclick="location.href='@Url.Action("Index", "Home", new { id = @Model.FirstorDefault.Id.ToString()}, null)'" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用概念验证应用程序,我想知道下面两个异步方法的内部结构.
会Task.Result导致任何问题DoSomethingAsync1()吗?
我已经阅读了一些Task.Result可能导致的阻塞和死锁问题,但我认为在这种情况下不会,因为它运行在一个单独的任务上,并且有一个await已经确保结果的任务.
这里的主要目标是在单独的任务上运行异步方法,因为此操作不依赖于主asp.net线程,更重要的是捕获由抛出的任何异常 DoSomethingThatTakesReallyLong()
另外,在ActionResult DoSomething(),我应该设置.ConfigureAwait(false);?
在下面的场景中,我是否需要注意隐藏的瓶颈/问题?
更新
我已经解决了我在这里输入问题时所做的拼写错误.(返回用户对象而不是任务)
而且,async在实际应用中,我无权将所有更高级别的方法转换为一次性.所以,这是我打算一步一步地做的事情,从不依赖于主线程的操作开始.
我非常感谢所有最佳实践答案,但这是一个小游乐场代码,我的主要问题是要知道是否存在内部差异DoSomethingAsync1(),DoSomethingAsync2()这可能会导致某些条件下的任何问题.
从阅读评论和答案,我得到一个想法,没有太大的区别.
private static async Task<User> DoSomethingAsync1()
{
try
{
var longRunningTask = Task<User>.Factory.StartNew(() => LongRunner.LongRunnerInstance.DoSomethingThatTakesReallyLong());
var user = await longRunningTask;
//Will the below line of code cause any issue?
Console.WriteLine(longRunningTask.Result.Id);
return user;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return null;
}
}
private static async Task<User> DoSomethingAsync2()
{
try
{ …Run Code Online (Sandbox Code Playgroud) 我已经向 google play 发布了一个 Ionic 应用程序,并且运行良好。但是,我必须更改其包名称,现在当我尝试重新上传它时,它说包名称应该与以前的版本相同。
您的 APK 需要具有包名称 com.mypackagename。您需要为 APK 使用不同的版本代码,因为您已有版本代码为“myversioncode”的版本代码。
我很高兴删除整个应用程序并上传新版本,但我认为谷歌不会允许我这样做。
我该如何解决这个问题?我也应该更新版本代码吗?
我有一个数据处理MVC应用程序,该应用程序可以处理从100MB到2GB的上载文件大小,并且包含一些长时间运行的操作。用户将上载文件,并将处理这些文件中的数据,然后最后将对数据的某些分析发送给相关的用户/客户端。
处理数据至少要花费几个小时,因此为了确保用户不必一直等待,我分派了一个单独的任务来执行此长时间运行的操作。这样,一旦文件被服务器接收并存储在磁盘上,用户将获得带有ReferenceID的响应,并且他们可以关闭浏览器。
到目前为止,它一直按预期运行,但是在阅读了有关在MVC中使用即弃模式以及在回收期间IIS抛弃工作线程的问题之后,我对此方法有所关注。
这种方法仍然安全吗?如果不是,如何确保正在处理数据的线程在完成处理并将数据发送给客户端之前不会消失?(以相对简单的方式)
该应用程序在.NET 4.5上运行,所以不要以为我可以使用 HostingEnvironment.QueueBackgroundWorkItem。
在控制器上使用Async / Await是否有帮助?
我还考虑过在文件存储到磁盘后,在应用服务器上使用消息队列来存储消息,然后将DataProcessor设置为单独的服务/进程,然后侦听队列。如果队列是可恢复的,那么它将向我保证,即使服务器崩溃或线程在完成处理数据之前被丢弃后,消息最终仍将最终得到处理。这是更好的方法吗?
我当前的设置如下
控制者
public ActionResult ProcessFiles()
{
HttpFileCollectionBase uploadedfiles = Request.Files;
var isValid = ValidateService.ValidateFiles(uploadedFiles);
if(!isValid){
return View("Error");
}
var referenceId = DataProcessor.ProcessData(uploadedFiles);
return View(referenceId);
}
Run Code Online (Sandbox Code Playgroud)
商业逻辑
public Class DataProcessor
{
public int ProcessFiles(HttpFileCollectionBase uploadedFiles)
{
var referenceId = GetUniqueReferenceIdForCurrentSession();
var location = SaveIncomingFilesToDisk(referenceId, uploadedFiles);
//ProcessData makes a DB call and takes a few hours to complete.
TaskFactory.StartNew(() => ProcessData(ReferenceId,location))
.ContinueWith((prevTask) =>
{
Log.Info("Completed Processing. Carrying on with other …Run Code Online (Sandbox Code Playgroud) 我使用jquery创建了一些基本脚本,当放在我的一个MVC视图中的标记下面时,它工作正常.我想将这些脚本移动到Scripts文件夹中的单独文件中,因此我创建了一个名为"CustomJquery.js"的文件并将其放在Scripts文件夹中.我在'BundleConfig.cs'中为它创建了一个包,但是当我使用@ Scripts.Render("〜/ bundles/CustomJquery")从我的视图调用时,我的脚本不再起作用了.我甚至尝试将它们放在'_Layout.cshtml'中,但仍然没有运气.请参阅下面的代码.任何帮助将不胜感激.谢谢
Scripts文件夹中的CustomJquery.js
$("#Button").click(function () {
alert("hello");
});
Run Code Online (Sandbox Code Playgroud)
Index.cshtml
<input id="Button" type="submit" value="Test" />
@Scripts.Render("~/bundles/CustomJquery")
Run Code Online (Sandbox Code Playgroud)
BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/CustomJquery").Include(
"~/Scripts/CustomJquery.js"));
Run Code Online (Sandbox Code Playgroud)
更新
是的,我可以在Google Chrome工具的"来源"标签中看到我的"CustomJquery.js".
根据'Elements'选项卡,我也可以在标记中看到脚本src
<script src="/Scripts/CustomJquery.js"></script>
</section>
</div>
Run Code Online (Sandbox Code Playgroud)
请帮忙
我正在对文本框进行一些验证。用户输入有效输入后,文本框应变为绿色,并且最右角应出现一个勾号。同样,如果用户输入了无效数据,文本框应变为红色,而应出现一个叉号。
为此,我使用引导程序的 'has-error has-feedback'和'has-success has-feedback'css 类。
我的问题是文本框是绿色的,并且即使在第一次加载页面时也有一个勾号。我需要验证反馈仅在用户输入输入后出现。当表单用于编辑现有记录时,同样适用。我怎样才能做到这一点?(我不确定我是否可以使用$dirty'$pristine` 来解决这个问题)
下面是我的标记。
<div class="form-group" ng-class="(Form.emailAddress.$valid) ? 'has-success has-feedback': 'has-error has-feedback'">
<label for="emailAddress">Email address</label>
<span ng-show="!Form.emailAddress.$valid">Please enter a valid address</span>
<input type="email" class="form-control" id="emailAddress" name="emailAddress" ng-model="Data.emailAddress" ng-pattern="validationPattern" ng-maxlength="20">
<span ng-show="Form.emailAddress.$valid" class="glyphicon glyphicon-ok form-control-feedback"></span>
<span ng-show="!Form.emailAddress.$valid" class="glyphicon glyphicon-remove form-control-feedback"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
关于这个主题的更多问题。
我还想检查电子邮件的最大长度,如果超过 20,我想显示不同的消息。我试过 Form.emailAddress.$maxlength 但无法让它工作。maxlength 是否也适用于“电子邮件”类型?
如何在用户移动到下一个文本框后显示反馈而不是在键入时显示它?可能类似于 jquery 的“focusout()”。
我在控制器中使用了验证模式,因为电子邮件不是必填字段,但输入时必须有效。我能否知道是否有比这样做更好的方法?
任何帮助将非常感激。谢谢
asp.net-mvc ×7
jquery ×5
angularjs ×4
html ×3
javascript ×3
.net ×2
angular-ui ×2
async-await ×2
c# ×2
json ×2
razor ×2
android ×1
asp.net ×1
iis ×1
jquery-ui ×1