我正在努力学习MVC.我想在添加控制器时自动生成所需的视图代码.如果我选择"具有读/写操作和视图的控制器,使用实体框架"选项,则可以执行此操作.但是我没有使用实体框架.如何在不使用Entity Framework的情况下实现类似的行为?为什么当我不使用Entity Framework时它无法自动生成视图?
另外,是否有任何好的MVC3教程不使用Entity Framework(可以使用代码下载)?
参考
用于WCF Web API的Levergaing T4Scaffolding
使用MvcScaffolding包支持您的ASP.NET MVC 3项目
用于WCF服务的MVC脚手架
为了学习DisplayTemplates,我创建了一个"String"DisplayTemplate,如下所示.期望在模型的字符串值之后附加单词"Hello".但它只显示"你好"这个词.我们如何纠正它?
注意:在Views\Contact\DisplayTemplates下添加String.cshtml
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
CONTROLLER
public class ContactController : Controller
{
// GET: /Contact/Details/5
public ActionResult Details(int id)
{
Contact myContact = new Contact();
myContact.FirstName = "Lijo";
myContact.LastName = "Cheeran";
myContact.Age = 26;
return View(myContact);
}
}
Run Code Online (Sandbox Code Playgroud)
详细视图
@model MyDisplayAndEditorTemplateTEST.Contact
<fieldset>
<legend>Contact</legend>
<div class="display-label" style="font-weight:bold" >FirstName</div>
<div class="display-field">
@Html.DisplayFor(model => model.FirstName)
</div>
<div class="display-label" style="font-weight:bold">LastName</div>
<div …Run Code Online (Sandbox Code Playgroud) 我需要使用带有RAZOR的MVC3将多个文件上传到Web服务器.我有以下代码.在控制器中,我的文件数为零.如何更正它以获取上传的文件的实际数量并获取内容?
public class MyFileController : Controller
{
public ActionResult MyFileProcessActionTest()
{
return View();
}
[HttpPost]
public ActionResult MyFileProcessActionTest(IEnumerable<System.Web.HttpPostedFileBase> files)
{
int fileCount = files.Count<System.Web.HttpPostedFileBase>();
return RedirectToAction("Index");
}
}
Run Code Online (Sandbox Code Playgroud)
视图
@{
ViewBag.Title = "MyFileProcessActionTest";
}
<h2>MyFileProcessActionTest</h2>
@using (Html.BeginForm())
{
<input type="file" name="files" id="file1" />
<input type="file" name="files" id="file2" />
<input type="submit" />
}
Run Code Online (Sandbox Code Playgroud)
读:
虽然我之前使用过TFS,但我是SVN的新手.我在VS 2010中有ASP.Net项目.我需要在项目中添加AjaxControlToolkit dll.添加此dll后,我尝试在VS2010中使用Subversion提交更改.项目文件出现在要提交的项目列表中; 但是没有列出新添加的dll.我怎样才能检查新添加的dll?
注意:我正在寻找一种涉及用户界面操作的方法; 不是命令.我正在使用Tortoise SVN
注意:BIN文件夹有一个问号.dll也被添加到其中.所以,我应该检查BIN吗?BIN文件夹中的dll文件也没有问号
我有一个gridview,如下所示.当EmpType合同时,EmpID必须被屏蔽为"XXX"; 对于普通员工,应显示实际的EmpID.此外,当它被屏蔽时,我需要在EmpID列中添加一个按钮控件.
我需要用标记来做; 不使用背后的代码.我们如何为这个逻辑编写Gridview的ItemTemplate的条件逻辑?
注意:.Net 4.0
<asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="AssociateID" DataField="AssociateID" />
<asp:TemplateField HeaderText="EmpID">
<ItemTemplate>
<%# Eval("EmpID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="EmpType" DataField="EmpType" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
代码背后
List<Associate> associatesList = new List<Associate>();
associatesList.Add(new Associate { AssociateID = 1, EmpID = 101, EmpType = "Contract" });
associatesList.Add(new Associate { AssociateID = 2, EmpID = 102, EmpType = "Regular" });
Gridview1.DataSource = associatesList;
Gridview1.DataBind();
Run Code Online (Sandbox Code Playgroud) 我有以下HTML代码.http://jsfiddle.net/Lijo/wJX9C/
我需要将内容("HAI"和按钮)对齐为中心对齐.我们如何纠正它?
注意:它需要在IE7,Chrome中运行
<html>
<div id="popup" class="popup">
<div id = "poupContentLine1" class="poupContentLine">
HAI
</div>
<div id = "poupContentLine2" class="poupContentLine">
<input type="submit" name="ctl00$detailContentPlaceholder$btnClose" value="CLOSE" id="detailContentPlaceholder_btnClose" />
</div>
</div>
</html>
Run Code Online (Sandbox Code Playgroud)
样式
.popup
{
width:530px;
background-color:#ffffff;
border:3px solid Orange;
padding: 10px 5px 10px 5px;
margin: 0px 0px 0px 0px;
}
poupContentLine
{
width:530px;
height:auto;
text-align:center;
margin: 0px 0px 0px 0px;
}
Run Code Online (Sandbox Code Playgroud) 我有两个派生自BankAccount类的类 - FixedBankAccount和SavingsBankAccount.这是基于LINQ to SQL的"TPH(Table Per Hierarchy)".
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.BankAccount")]
[InheritanceMapping(Code = "Fixed", Type = typeof(FixedBankAccount), IsDefault = true)]
[InheritanceMapping(Code = "Savings", Type = typeof(SavingsBankAccount))]
public abstract partial class BankAccount : INotifyPropertyChanging, INotifyPropertyChanged
Run Code Online (Sandbox Code Playgroud)
我需要实现一个方法GetAllAccountsOfType,它将返回所有SavingsBankAccount(如果传递的类型是SavingsBankAccount)或FixedBankAccounts(如果传递的类型是FixedBankAccount).我收到错误:
无法找到类型或命名空间名称'param'"
使用以下代码(在LINQ查询中使用"OfType")
我们怎样才能让它发挥作用?
库:
namespace RepositoryLayer
{
public class LijosSimpleBankRepository : ILijosBankRepository
{
public System.Data.Linq.DataContext Context { get; set; }
public virtual List<DBML_Project.BankAccount> GetAllAccountsOfType(DBML_Project.BankAccount param)
{
var query = from p in Context.GetTable<DBML_Project.BankAccount>().OfType<param>()
select p;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我使用函数FreezeAllAccountsForUser生成以下XML.我需要为此函数仅序列化以下两列.如何将序列化限制为两列?
注意:关键点是,制定此限制的范围应仅在FreezeAllAccountsForUser函数内; 不全球化.
参考
XML
<ArrayOfBankAccount xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" z:Size="1"
xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"
xmlns="http://schemas.datacontract.org/2004/07/DBML_Project">
<BankAccount z:Id="2" i:type="FixedBankAccount">
<AccountOwnerID>2</AccountOwnerID>
<AccountType z:Id="3">Fixed </AccountType>
<BankAccountID>2</BankAccountID>
<BankUser z:Id="4">
<BankAccounts z:Id="5" z:Size="1">
<BankAccount z:Ref="2" i:nil="true" />
</BankAccounts>
<Name z:Id="6">TestP1 </Name>
<UserID>2</UserID>
<UserType z:Id="7">Ordinary </UserType>
</BankUser>
<OpenedDate i:nil="true" />
<Status z:Id="8">FrozenFA</Status>
</BankAccount>
</ArrayOfBankAccount>
Run Code Online (Sandbox Code Playgroud)
序列化
public class BankAccountAppService
{
public RepositoryLayer.ILijosBankRepository AccountRepository { get; set; }
public void FreezeAllAccountsForUser(int userId)
{
IEnumerable<DBML_Project.BankAccount> accounts = AccountRepository.GetAllAccountsForUser(userId);
foreach (DBML_Project.BankAccount acc in accounts)
{
string typeResult = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用代码优先方法创建数据库.当我运行以下代码时,我收到以下异常.我们怎样才能克服这一点?
笔记:
例外:
提供程序未返回ProviderManifestToken字符串
消息:
此操作需要连接到"主"数据库.无法创建与"主"数据库的连接,因为已打开原始数据库连接并且已从连接字符串中删除凭据.提供未打开的连接.
内在例外:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
码:
using System.Data.Entity;
namespace LijosEF
{
public class Dinner
{
public int DinnerID { get; set; }
public int Title { get; set; }
}
public class RSVP
{
public int RSVPID { get; set; }
public int DinnerID { get; set; }
public virtual Dinner Dinner { get; set; }
}
//System.Data.Entity.DbContext is from …Run Code Online (Sandbox Code Playgroud) 我有一个WCF服务和两个控制台应用程序客户端.
服务:使用WCSF Blue工具从wsdl联系人创建服务代码.
客户端1:此客户端使用通过浏览svc文件获得的wsdl.此浏览的wsdl文件与合同wsdl文件略有不同.
客户端2:此客户端使用原始wsdl合同创建.
Cleint1工作正常.客户端2无法正常工作.什么都可能是潜在的问题?
两个客户端的App.Config文件看起来相似 - 只有名称更改.我认为,问题将在客户端生成C#代码 - 最有可能在Action - ReplyAction中.这里有什么需要纠正的?
一个明显的区别在于Action和ReplyAction
客户1:
Action ="urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/GetMultiplied",ReplyAction ="urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/GetMultipliedRe"+"sponse"
客户2:
Action ="urn:lijo:demos:multiplyservice:calculation:v1:getMultipliedIn",ReplyAction ="*"
跟踪消息
由于EndpointDispatcher上的ContractFilter不匹配,因此无法在接收方处理具有Action'urn:lijo:demos:multiplyservice:calculation:v1:getMultipliedIn'的消息.这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配.检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息,传输,无).
编辑
这可以通过更改Action和ReplyAction来更正,如下所示(从服务中复制).
[System.ServiceModel.OperationContractAttribute(Action = "urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/getMultiplied", ReplyAction = "urn:lijo:demos:multiplyservice:calculation:v1/ICalculationService/getMultipliedRe" +
"sponse")]
Run Code Online (Sandbox Code Playgroud)
注意:确保服务中的外壳正确是很重要的(即getMultiplied不是GetMultiplied)
从服务中复制不是一个好的选择,尽管它有效.什么是正确的Action和ReplyAction?
另外,您能否指出如何修改wsdl以使ReplyAction在生成的客户端代理中正确?这是将其标记为已回答的重要部分.
用于元数据发布的WsdlExporter忽略使用星号操作(Action和ReplyAction)的操作.
在服务中指定星号指示WCF不向消息添加回复操作,如果您直接对消息进行编程,这将非常有用.
参考文献:
RestaurantData.xsd
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="RestaurantData" targetNamespace="urn:lijo:demos:multiplyservice:data:v1"
elementFormDefault="qualified" xmlns="urn:lijo:demos:multiplyservice:data:v1"
xmlns:mstns="urn:lijo:demos:multiplyservice:data:v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="multipliedResult">
<xs:sequence>
<xs:element name="resultNumber" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
原始合同wsdl
<definitions xmlns:import0="urn:lijo:demos:multiplyservice:messages:v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import1="urn:lijo:demos:multiplyservice:data:v1" xmlns:tns="urn:lijo:demos:multiplyservice:calculation:v1" …Run Code Online (Sandbox Code Playgroud) .net ×7
c# ×7
asp.net ×5
asp.net-mvc ×3
linq-to-sql ×2
razor ×2
wcf ×2
ado.net ×1
css ×1
generics ×1
gridview ×1
html ×1
javascript ×1
linq ×1
sql-server ×1
svn ×1
tortoisesvn ×1
vb.net ×1