我是 MVC 新手,我正在尝试向我的主布局页面添加部分视图,以便我可以在整个应用程序中显示消息。我在解决这个问题时遇到了一些麻烦:
这是我的布局:
<div class="span12">
<p>
@{Html.RenderAction("Messaging", "Messaging");}
</p>
@RenderBody()
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的消息控制器:
public ActionResult Messaging()
{
return PartialView(new ViewModels.Messaging()
{
MessageType = Utilities.MessageType.Success,
MessageHeader = "Test",
Message = "this is a test message"
});
}
Run Code Online (Sandbox Code Playgroud)
这是我存储在共享文件夹中的部分视图,名为 _MessagingPartial.cshtml:
@model AWS.PL.ViewModels.Messaging
<span>
Model.Message
</span>
Run Code Online (Sandbox Code Playgroud)
这是我的视图模型:
public class Messaging
{
public Utilities.MessageType MessageType { get; set; }
public string MessageHeader { get; set; }
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我收到错误“未找到部分视图消息传递”错误。部分视图应该被称为 Messanging.cshtml 还是我得到了根本性错误?
非常感谢任何帮助。
谢谢,威尔基。
我试图养成编码到接口而不是实现的习惯,而在大多数情况下,我可以看到有一些我努力的原因.
拿这个非常简单的例子:
public interface IAuditLog
{
void AddLog(string log);
}
public class AuditLog : IAuditLog
{
public void AddLog(string log)
{
//implementation
}
}
Run Code Online (Sandbox Code Playgroud)
要调用审计日志类:
public partial class AuditLogPage : System.Web.UI.Page
{
protected void btnAddLog_Click(object sender, EventArgs e)
{
IAuditLog objAuditLog = new AuditLog();
objAuditLog.AddLog("test log");
}
}
Run Code Online (Sandbox Code Playgroud)
在实例化时我仍然需要使用AuditLog,那么重点是什么?如果AddLog方法签名发生变化,我仍然需要浏览所有使用它的页面并修改代码.我错过了这一点吗?
感谢任何提前帮助,威尔基.
任何人都可以告诉我为什么我在第二行上出现错误,说'意外字符串',但是当我直接在我的视图上时它正常工作(我使用的是MVC 3,而不是它有所不同):
function getUsers(processId) {
$.ajax({
url: "@Url.Action('GetProcessApprovers', 'Risk')",
data: { processId: processId },
dataType: "json",
type: "POST",
error: function () {
alert("An error occurred.");
},
success: function (data) {
var items = "<option value=\"\">-- Please select --</option>"
if (data != "") {
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});
}
$("#ProcessOwnerId").html(items);
}
});
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试保存从我的页面上传的文件,但出现访问被拒绝错误:
public void SaveFile(Item item, HttpPostedFileBase file)
{
var dir = string.Format(@"{0}\NSN\{1}", ConfigurationManager.AppSettings["ContentLocation"].ToString(), item.Id.ToString());
if (!System.IO.Directory.Exists(dir))
System.IO.Directory.CreateDirectory(dir);
Array.ForEach(Directory.GetFiles(dir), File.Delete);
file.SaveAs(dir);
}
Run Code Online (Sandbox Code Playgroud)
我正在从 Visual Studio 的本地主机运行此站点,因此不涉及应用程序池。我已经让网络服务(以及作为测试的每个人)完全控制文件夹及其子文件夹。奇怪的是,它会根据需要创建文件夹,并删除现有文件夹中的任何文件。只有当我调用 SaveAs 函数时才会出现错误。