我对JavaScript很新,但我正在学习.. 但是现在我被卡住了,我做了这个JavaScript除了我得到语法错误
$(function () {
$(function () {
$('#date').datepicker({
showButtonPanel: true,
changeMonth: true,
changeYear: true,
dateFormat: "yy-mm-dd",
firstDay: 1,
onSelect: function (dateText) {
$('#EndDate').datepicker('option', 'minDate', new Date(dateText));
}
});
});
});
if (!((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)))) {
$(function () {
$("#startTime").timePicker({
step: 15,
endTime: "23:45"
});
});
$(function () {
$("#endTime").timePicker({
step: 15,
endTime: "23:45"
});
});
$(function () {
$("#breakTime").timePicker({
step: 5,
endTime: "03:00"
});
});
}
function SetDate(dt) {
$('#date').val(dt);
}
var n = @(Model.Projects.Count);
function AddProject() {
n++;
$.ajax({
type: "GET",
url: "@(Url.Action("Project"))/" + n + "/?showDescription=false",
dataType: "html",
success: function(data) {
$('#projects').append(data);
}
});
}
这是我的AddProject函数我得到了我的错误,我怎么看不出有什么问题?
这是我想要使用脚本的视图。
@if (ViewData["posted"] != null)
{
<div class="alert alert-success">
<strong>Inställningar sparade</strong>
</div>
}
@using (Html.BeginForm("Settings", "Reports", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="portlet light">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green-sharp bold uppercase">Inställngar</span>
</div>
</div>
<table class="table table-striped table-bordered table-hover">
<tr>
<td>Starttid:</td>
<td>@Html.TextBox("startTime", Model.Times.StartTime)</td>
</tr>
<tr>
<td>Sluttid:</td>
<td>@Html.TextBox("endTime", Model.Times.EndTime)</td>
</tr>
<tr>
<td>Rastlängd:</td>
<td>@Html.TextBox("breakTime", Model.Times.BreakTime)</td>
</tr>
</table>
</div>
<div id="projects">
@foreach (var data in Model.Projects)
{
Html.RenderPartial("Project", data, ViewData["vd"] as ViewDataDictionary);
var viewDataDictionary = ViewData["vd"] as ViewDataDictionary;
if (viewDataDictionary != null)
{
viewDataDictionary["id"] = (int)viewDataDictionary["id"] + 1;
}
}
</div>
<a href="javascript:AddProject()" class="btn btn-primary">Lägg till projekt</a>
<button type="submit" class="btn btn-primary">Spara</button>
}
</div>
</div>
</div>
</div>
</div>
</div>
答案 0 :(得分:2)
Javascript文件不支持Razor编译。只有视图才能这样做。你不能在单独的JS文件中使用Razor。
而是将任何所需信息注入视图(例如,将元素注入data-
或其他属性),并让您的JS从元素中获取这些值(或者从您在视图中设置的几个全局变量) 。
我会为你添加一些例子......
<a id="addProject" href="@(Url.Action("Project") + "/{id}/?showDescription=false")" class="btn btn-primary">Lägg till projekt</a>
$('#addProject').click(function(){
var url = $(this).attr('href');
url = url.replace("{id}", myNewId);
$.ajax({
url: url
...
});
});
我强烈建议永远不要使用内联事件处理程序(如onclick=""
)和jQuery作为单独的事件代码,使注册更加难以维护,并且不具备与jQuery事件处理相同的所有功能。
将此代码段放在视图中
<script type="text/javascript>
var projectCount = @(Model.Projects.Count);
// or
window.projectCount = @(Model.Projects.Count);
</script>
然后您可以使用以下命令从其他JS文件访问projectCount:
var count = projectCount + 1;
或
var count = window.projectCount + 1;