我收到一个错误 - 没有找到与请求匹配的控制器'Action'的操作.
网址是http://localhost:37331/api/action/FindByModule/1.
我使用的路由是
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
控制器:
public class ActionController : ApiController
{
private IActionRepository repository = null;
[HttpGet]
[ActionName("All")]
public IEnumerable<JsonAction> All()
{
return from action in this.repository.Get()
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(),
Description = action.Description.Trim(),
};
}
[HttpGet]
[ActionName("FindByModule")]
public IEnumerable<JsonAction> FindByModule(Int64 moduleId)
{
return from action in this.repository.FindByModule(moduleId)
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(), …Run Code Online (Sandbox Code Playgroud) Steve Sanderson在2012年的荷兰Techdays上做了非常有趣的演讲.在其中一个中,他提出了一个用于MVC应用程序中客户端 - 服务器通信的库:Upshot.
我真的很惊讶它是多么容易使用它,所以我想下载并测试它.我在这里通过NuGet找到了下载链接,但我找不到任何文档.有没有人有一些有用的东西?我还要感谢Steve在演示过程中展示的示例代码.
编辑:
我找到了我在Techdays参加的在线演讲.这太值得一看了.您将了解结果的功能,并了解如何从中开始.祝好运并玩得开心点.
链接:http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159
在MVC4中使用新的Api控制器,我发现了一个问题.如果我有以下方法:
public IEnumberable<string> GetAll()
public IEnumberable<string> GetSpecific(int i)
这会奏效.但是,如果我想要检索不同类型的某些不同数据,则默认为该GetAll方法,即使将$.getJSON其设置为GetAllIntegers方法:
public IEnumberable<int> GetAllIntergers()
(错误的命名约定)
我有可能做到这一点吗?
我可以GetAll在Web API控制器中只有一个方法吗?
我认为可视化我想要实现的目标更容易.以下是一段代码,用于展示我希望能够做到的单一内容ApiController:
public IEnumerable<string> GetClients()
{ // Get data
}
public IEnumerable<string> GetClient(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMember(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMembers()
{ // Get data
}
Run Code Online (Sandbox Code Playgroud) 我遇到了Json和Lists的问题
我试图返回一个聊天实体类列表,但当我尝试返回它时编译器发出呜呜声.我也尝试返回IEnumerable <>,但同样的错误来了
我能做什么 ?
这是我的函数返回项目,
public List<Chat> GetNewChatPosts()
{
var userID = U_rep.GetUserID(User.Identity.Name);
var list = G_rep.GetNewestChat(0, userID);
return Json(list);
}
Run Code Online (Sandbox Code Playgroud)
这是Get Newest Chat功能
public List<Chat> GetNewestChat(int gameID, int userID)
{
var pos1 = (from p in n_db.ChatPos
where p.userID == userID && gameID == p.gameID
select p).SingleOrDefault();
int pos;
if (pos1 == null)
{
pos = 0;
ChatPo n = new ChatPo();
n.gameID = gameID;
n.userID = userID;
n.chatID = pos;
n_db.ChatPos.InsertOnSubmit(n);
n_db.SubmitChanges();
}
else
{
pos = …Run Code Online (Sandbox Code Playgroud) 我需要在我的MVC3应用程序中显示Treeview.将有一个自引用分层表(文件夹)和另一个链接到它的表(文档.)(所以文件夹可以有N-subFolders,任何文件夹/子文件夹都可以有很多文档.)
我已经研究过使用Telerik,DJME和MVC Controls Toolkit等第三方供应商.虽然所有不错的软件包,我对许可证感到不安,因为我是MVC的新手(以及一般的编程),我发现他们的文档缺乏正确的显示工作.
我还查看了TreeViews上大量引用的博客:
除了其他较少引用的文章(前三名也非常有用):
我想使用TreeViewHelper或递归部分视图方法.
但是,在TreeViewHelper中,我无法从第二个表中提取数据(即.我只能让它列出文件,但我不知道如何让它列出每个文件的文档.)
对于递归部分视图,我仍然不知道如何将其转换为MVC3以及一般实现.我找到了一个帖子(forums.asp.net/t/1652809.aspx/1?treeview+with+mvc+3),解释了如何将其转换为MVC3,但我仍然不清楚该怎么做 我一直收到部分视图的错误:无法隐式转换类型'void'来输入'object'
就像我之前说的,我是MVC3的新手,并希望了解哪种方法最适合我的场景以及如何实现它.
当我在开发PC上安装MVC4 beta时,它有一个SPA(单页面应用程序)模板.今天在具有相同设置(VS2010 SP1,win7)的不同PC上,我安装了MVC4 RC,但不再提供SPA模板(见图).还有谁有相同的问题吗?或者这是一个我无法找到的记录变更?

我一直在http://www.asp.net/single-page-application/an-introduction-to-spa上阅读MVC 4 SPA .
即使在阅读之后我还不清楚我应该在什么情况下使用SPA.通过查看上面链接上的几个示例,看起来控制器保持不变.MVC网页与SPA之间的区别在于SPA是否包含许多Javascript框架?如果我们将这些Java Script框架(Jquery,Knockout,Upshot等)与MVC Web一起使用,我们可以获得与SPA相同的结果吗?OR SPA是指整个网络应用程序的一页?
另外,我们是否正在使用SPA的布局页面?
谢谢你的澄清.希望有人不会 - 投票.
在使用MVC 4的新单页应用程序工具时,我注意到我找到的所有示例都没有包含通过WebApi更新的DateTime示例.我很快发现了原因.
我首先从提供的模板生成标准SPA.然后我打开了TodoItem.cs并添加了DateTime字段.然后我按照评论的指示生成了控制器.(没有datetime字段,一切正常).
生成所有内容后,我启动了应用程序并导航到控制器索引(我称之为控制器"任务").我按预期获得了0个记录的网格页面并单击了添加按钮.我按预期被带到了编辑页面并输入了一些数据,包括我闪亮的新日期时间字段中的日期.然后点击保存.
产生了一个错误:
服务器错误:HTTP状态代码:500,消息:反序列化System.Web.Http.Data.ChangeSetEntry []类型的对象时出错.DateTime内容'01/01/2012'不以'/ Date('和以')/'结尾,如JSON所要求的那样.
看起来工具还不支持DateTime.我确信我可以花一些时间来搞清楚并让它发挥作用,但我想我可能会在这里找到一些运气,因为已经解决了这个问题且可以提供洞察力的人.
有人已经在争吵吗?
更新:我提出了自问这个以来我发现的更多信息.我尝试使用JSON.Net作为我的Formatter,如下所示.我认为这将是最终的解决方案,但是,正如下面推荐的海报还不够.
使用JSON.Net序列化程序时,我收到以下错误:
此DataController不支持实体'JObject'的操作'Update'.
原因是JSON.Net没有完全填充格式化程序试图取消规划的对象(System.Web.Http.Data.ChangeSet).
发送的json是:
[{"Id":"0",
"Operation":2,
"Entity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1},
"OriginalEntity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1}
}]
Run Code Online (Sandbox Code Playgroud)
内置的Json Formatter能够将此Json重构为ChangeSet对象,并在Entity和OriginalEntity字段中嵌入TodoItem对象.
有没有人得到JSON.Net来正确反序列化?
2个问题.
1)在Javascript中编写脚本时是否可以按原样使用LitJson库?这是一个关于能够在javascript源代码中使用c#source的一般问题.
2)我是c#dev的新手.我似乎无法让LitJson启动并运行.以下代码抛出此错误:An object reference is required to access non-static memberLitJson.JsonReader.Read()'`
using UnityEngine;
using System.Collections;
public class Loadr : MonoBehaviour {
string url= "http://developer.echonest.com/api/v4/artist/images?api_key=N6E4NIOVYMTHNDM8J&id=ARH6W4X1187B99274F&format=json&results=1&start=0&license=unknown";
void Start (){
WWW www = new WWW(url);
print(www.text);
Object a = LitJson.JsonReader.Read(www.text);
print(a.response.status);
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我正面临来自ASP.NET Ajax Controls Toolkit ModalPopupExtender的错误行为,当我Alert()从服务器端调用JavaScript函数时,模态出现在后台.我不知道为什么会这样.
这是代码:
VB:
Sub ShowAlert(ByVal message As String)
ScriptManager.RegisterStartupScript(Me.UpdatePanel, UpdatePanel.GetType(), "notificationScript", "<script language='JavaScript'> alert('" & message & "'); </script>", False)
End Sub
Run Code Online (Sandbox Code Playgroud)
ASPX:
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
<asp:Panel ID="pnlPartialInstructions" CssClass="modal" runat="server">
......
<asp:Panel ID="pnlPrintConfirmation" CssClass="modal" runat="server">
<table class="ui-accordion">
<tr>
<td colspan="2">
<asp:Label Text="Do you want to print the receipt?" ID="lblPrintConfirmation" runat="server"
meta:resourcekey="lblPrintConfirmationResource1" Font-Bold="True" Font-Names="tahoma"
Font-Size="Large" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnConfirmPrint" Text="Yes" CssClass="google-button google-button-blue"
runat="server" meta:resourcekey="btnConfirmSaveResource1" Font-Size="Large" />
</td>
<td>
<asp:Button ID="btnCancelPrint" Text="No" …Run Code Online (Sandbox Code Playgroud) 我正在关注本教程:
并查看"获取书籍详细信息"部分.
我看到这段代码:
[HttpGet("api/books/{id}/details")]
public BookDetailDto GetBookDetail(int id)
{
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到了错误
HttpGet有0个参数,但是用1个参数调用
(我在ASP .net 4.0 WebAPI上)
指定路径的/详细信息部分的新方法是什么?
我的努力:
<package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Providers.Core" version="1.2" targetFramework="net40" />
<package id="Microsoft.AspNet.Providers.LocalDB" version="1.1" targetFramework="net40" />
<package id="Microsoft.AspNet.Razor" version="2.0.20715.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi" version="4.0.20710.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.HelpPage" version="4.0.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.OData" version="4.0.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="4.0.0" targetFramework="net40" />
<package …Run Code Online (Sandbox Code Playgroud) 在MVC4中,我有一个EditorFor字段,它表示一个布尔值并呈现为一个复选框,如果选中该复选框,我想让其他EditorFor字段更改为不可编辑.这在简单的html中很简单,但是使用razor语法我不知道该怎么做.
<div class="editor-field">
@Html.EditorFor(model => model.Draw)
@Html.ValidationMessageFor(model => model.Draw)
</div>
<script type="text/javascript">
function validate() {
if (document.getElementById('@Html.EditorFor(model => model.Draw)').checked) {
alert("checked")
} else {
alert("You didn't check it! Let me check it for you.")
}
}
Run Code Online (Sandbox Code Playgroud)
试图用那个脚本测试它,但因为我不知道编辑器的ID,因为我不确定该怎么做.
我正在使用新的MVC4 ASP.Net Web API系统.
我在使用WebClient的测试项目中调用我的API.如果我使用GET或POST,它可以正常工作.如果我使用其他任何东西,我会得到Method Not Allowed.我实际上是通过注入以下标题来"伪造"该方法.我这样做是因为我的最终用户也必须这样做,因为一些防火墙的限制.
我通过IIS调用URL(即不是cassini) - 例如http:// localhost/MyAPI/api/Test
wc.Headers.Add("X-HTTP-Method", "PUT");
Run Code Online (Sandbox Code Playgroud)
我尝试在IIS中调整脚本映射,但由于没有扩展,我不知道我要调整的是什么!
有任何想法吗?关心尼克
asp.net ×4
asp.net-spa ×4
asp.net-mvc ×3
c# ×3
javascript ×2
json ×2
asp.net-ajax ×1
datetime ×1
hierarchy ×1
installer ×1
list ×1
litjson ×1
singlepage ×1
treeview ×1
upshot ×1