最近开始了一个新项目并计划使用MVC 4.在没有安装MVC 3的情况下安装MVC 4 RC的错误.
在阅读其他用户遇到的问题后,卸载了MVC 4并尝试安装MVC3.
我使用平台安装程序来安装MVC 3但是反复遇到一些关于MVC 3的某些部分无法安装的错误消息(平台安装程序的详细报告没有帮助).
我卸载并重新安装了Visual Studio 2010 Enterprise,并尝试两次安装MVC 3.第二次只是为了向别人展示错误.
我尝试了第三次安装,所以我可以将错误复制到Stack Overflow以获得洞察力.
令人震惊的是,这次成功了.
一方面我很高兴有一个"成功"安装,另一方面我很紧张,可能仍然有些不对劲.
我知道我没有给予太多的帮助,但我想知道是否有其他人遇到过这个序列或类型的问题?我知道Microsoft开发人员会关注此站点.任何人都可以指出从我的环境中"清理"MVC 4 RC可能需要的任何其他步骤吗?
我正在尝试通过ajax调用发送模型的一部分,但这样做就像下面的代码一样,不起作用.我怎么能传递这个对象?
$.ajax({
url: "/Controller/Action",
type: "GET",
data: @Model.Company,
success: function (result) {
$('#myDiv').html(data);
}
});
Run Code Online (Sandbox Code Playgroud)
这就是我的JS推出的内容:
MyProj.Domain.Entities.Company
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
Uncaught ReferenceError: MyProj is not defined
Run Code Online (Sandbox Code Playgroud) 我需要显示Json返回的消息.
在控制器中,抛出异常并捕获到catch块中.我正在返回错误错误消息.
在Ajax中,成功部分始终执行.但如果是从我的错误web服务,我不想执行正常; 相反,我想显示一条错误消息.
我怎么能做到这一点?
我的代码如下:
[HttpPost]
public JsonResult DeleteClientRecord()
{
bool result = true;
try
{
result = ClientCRUDCollection.DeleteClient(deleteClientId);
}
catch (Exception ex)
{
return Json(ex.Message, JsonRequestBehavior.AllowGet);
}
return Json(new { result }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
$("#YesDelete").click(function () {
$.ajax({
type: "POST",
async: false,
url: "/Client/DeleteClientRecord",
dataType: "json",
error: function (request) {
alert(request.responseText);
event.preventDefault();
},
success: function (result) {
// if error from webservice I want to differentiate here somehow …Run Code Online (Sandbox Code Playgroud) 这个观点:
@Using Html.BeginForm
SimpleMessage
End Using
@Helper SimpleMessage()
@<p>This is a simple message</p>
End Helper
Run Code Online (Sandbox Code Playgroud)
结果是
<form action="/Controller/Action" method="post"></form>
Run Code Online (Sandbox Code Playgroud)
但
@* Now let's not call it from within a using *@
@SimpleMessage
@Helper SimpleMessage()
@<p>This is a simple message</p>
End Helper
Run Code Online (Sandbox Code Playgroud)
结果是
<p>This is a simple message</p>
Run Code Online (Sandbox Code Playgroud)
为什么我的助手在我的Using Html.BeginForm?
我想访问这个网址
/thread/123
Run Code Online (Sandbox Code Playgroud)
123线程在哪里id.
我无法弄清楚如何设置我的路线或它是什么.
我想添加thread到我的HomeController,但它似乎只有我去的时候才有效/home/thread.
如何设置此项目以使URL /thread/123可以正常工作?
我尝试/thread作为一个控制器,但似乎它认为123是一个Action方法,另一个尝试有线程在Home而不是root.
我有一个控制器有很多动作.我需要根据这个条件阻止执行某些操作:
if (Session["MyObject"] == null) return RedirectToAction("Introduction");
Run Code Online (Sandbox Code Playgroud)
它应该重定向到默认的"简介"操作.
我可以在每个动作中加入这个条件,但是我想在一个地方定义这个条件,就像在控制器的构造函数中一样.
有任何想法吗?谢谢.
我有一个主视图,呈现两个部分视图.主视图包含表单内的两个部分视图.每个部分视图也包含表单.所有3个视图共享相同的viewmodel.我想要做的是使用主视图封装来自所有视图的数据,并使用部分视图运行特定的Controller动作结果.
我想知道这是否可能.在调试时,我看到我的内容总是发布到主视图表单的HTTPPost.我已相应地为每个表单提交了按钮.对不起代码发布,它的全部拆分.
主要观点:
@using (Html.BeginForm("Main", "Registration", FormMethod.Post,
new { @class="mainform" }))
{
<form>
<fieldset>
<div id ="option1" class="conglomerate">
@Html.Partial("_GetBusiness")
</div>
<div id ="option2" class="dealership">
@Html.Partial("_GetLocation")
</div>
<button type="submit" value="Create" class="buttonBlue" id="">
<span>Create a new dealer</span>
</button>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
部分1
@using (Html.BeginForm("CreateBusiness", "Business", FormMethod.Post,
new { @class="buisinessform" }))
{
<form>
<div class="editor-field">
@Html.DropDownListFor(m =>m.BusinessId, new SelectList(Model.Businesses,
"BusinessId", "BusinessName"), "")
</div>
<label>Your company not listed? Register yours below:</label>
<div class="editor-label">
@Html.LabelFor(model => model.BusinessName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BusinessName)
@Html.ValidationMessageFor(model => model.BusinessName) …Run Code Online (Sandbox Code Playgroud) 是否可以将我的操作方法的控制器操作访问限制为仅限AJAX的请求?
我的意思是非Ajax请求操作它将被重定向到404或抛出错误.如果JS在我自己的页面上发出请求,则Action仅返回正确的结果.
我试着谷歌,但没有找到答案.我了解到我可以为此目的实现自定义过滤器,但是它可能已经存在于MVC中了吗?
谢谢.
我目前正试图弄清楚如何更改我的博客网址规则.
现在URL是/ Blog/Details/1但我读到这是一个更好的SEO练习来制作URL /Blog/Details/Post-Title.我在我的博客数据库中创建了一个额外的字段,标记为FriendlyUrl,当我创建一个博客条目时,我用破折号( - )替换空格,但现在我不知道如何使我的应用程序正常工作.
我被告知要查看我的global.asx.cs,但这就是我的样子.
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器代码的详细信息
public ActionResult Details(int id = 0)
{
Blog blog = _db.Blogs.Find(id);
if (blog == null)
{
return HttpNotFound();
}
return View(blog);
}
Run Code Online (Sandbox Code Playgroud)
这是当前用于链接到博客条目的链接.
<a href="@Url.Action("Details", "Blog", new { id=item.Id})">@Html.DisplayFor(modelItem => item.Title)</a>
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
我很难在MVC3中解决路由问题.
以前我一般只是避开整个区域,并坚持丑陋的老式?id=1&foo=bar网址.不太好.
我这样定义了4条路线
routes.MapRoute("Blog", "{controller}/{action}/{PageNumber}/{PostsPerPage}", new { controller = "blog", action = "list", PageNumber = UrlParameter.Optional, PostsPerPage = UrlParameter.Optional });
routes.MapRoute("Code", "{controller}/{action}/{title}", new { });
routes.MapRoute("Id", "{controller}/{action}/{id}", new { });
routes.MapRoute("Default", "{controller}/{action}", new { controller = "home", action = "index" });
Run Code Online (Sandbox Code Playgroud)
我试图从最具体到最少的顺序排序.
第一个"博客"路线工作正常,我可以使用类似的URL /blog/list/2/5,它正确映射到我的控制器.
底部的默认路线也正如我所料.
但是如果我有这样的动作方法:
public ActionResult BarX(int id)
{
//some stuff
}
public ActionResult BarY(string title)
{
//some stuff
}
Run Code Online (Sandbox Code Playgroud)
我希望它使用第三条路线并生成一个类似的URL /foo/barX/3.
但是,如果我使用
@Html.ActionLink("TEST1", "barX", "foo", new { id = 3 }, null)
Run Code Online (Sandbox Code Playgroud)
生成的URL是 …
asp.net asp.net-mvc routes asp.net-mvc-routing asp.net-mvc-3
asp.net-mvc ×10
asp.net ×7
c# ×4
javascript ×3
jquery ×3
ajax ×2
razor ×2
html ×1
routes ×1
vb.net ×1