.NET MVC4 实训记录之七(实现资源的自主访问后续)
我们在上一篇中讨论了如何利用ModelMetadata实现国际化资源文件访问,但也留下了一些问题,即:如何利用ModelMetadata实现相同类型的属性信息的个性化资源显示。本人没有找到合适的方案,期待着高人的指点。
本章,介绍第三种资源访问方案,用于解决上述问题(该方案并非从设计角度解决问题)。
首先,描述下我们的问题。
第一步,在UserProfile类型中添加两个Address类型的属性:
- #region 用户住址信息
- public int? UserAddressId { get; set; }
- [ForeignKey("UserAddressId")]
- public Address UserAddress { get; set; }
- #endregion
- #region 用户公司地址信息
- public int? CompanyAddressId { get; set; }
- [ForeignKey("CompanyAddressId")]
- public Address CompanyAddress { get; set; }
- #endregion
第二步,在EditUser视图中展示这两个属性的City信息:
- @using (Html.BeginForm("EditUser", "Account", FormMethod.Post))
- {
- @Html.ValidationSummary()
- <div>
- @Html.LabelFor(p => p.UserName)
- @Html.TextBoxFor(p => p.UserName)
- @Html.LabelFor(p => p.UserAddress.City)
- @Html.TextBoxFor(p => p.UserAddress.City)
- @Html.LabelFor(p => p.CompanyAddress.City)
- @Html.TextBoxFor(p => p.CompanyAddress.City)
- </div>
- <input type="submit" value="提交" />
- }
第三步,在资源文件中添加相应的资源:
- <resource key="UserProfile.UserAddress" value="User Address "/>
- <resource key="UserProfile.UserAddress.City" value="User City "/>
- <resource key="UserProfile.CompanyAddress" value="Company Address "/>
- <resource key="UserProfile.CompanyAddress.City" value="Company City "/>
第四步,使用自定义ModelMetadataProvider绑定显示信息:参考上一篇博文。
运行项目打开页面,看到内容如下:
aaarticlea/png;base64,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" alt="" />
如图所示,自定义的资源信息未能如愿显示在页面上。这是由于在Provider中,此时的Container并非是当前页面绑定的强类型,而是当前属性的持有者的类型。
aaarticlea/png;base64,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" alt="" />
如上所示,构造出的资源键值为"Address.City"(针对这两个属性,我们会得到同样的结果),因此没有能够显示我们预想的信息。令人难过的是,虽然我们可以通过查看modelAccessor参数得知当前访问的属性来源,但仍然无法在运行期获取这个来源(至少我还没有找到方法)。
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApIAAAChCAIAAAD7m8gbAAAgAElEQVR4nO19z28cx7Xu/CFvkcXbGNpyYWktWMsAhpTFjTbiBAwg2LEQwLAuHV9P/EO2xTu6w4SUNYg8tCwSGEghxdCXY4CcKLBgiJAgW7gIHElUMEakAPaL8mDiAUa467fo7qpTVefUj57ume7h+XBgUz3d1adOVZ2v6lR1VS1iMBgMBoOB4bvv/hkqF37Xf+7wCau8VD/XnJ5++XnHbSeeO3zihX97Q5PauG3CYDAYDEZJUQBt/+fvn377t6ff/xB9c/3c2y8cfmvx9vVTTNsMBoPBYAyPAmj74q3o/uvyD/FPpm0Gg8FgMIZDMaPt2+9Pv/w80zaDwWAwGPmiGNr+/ofoX8+efv9DFEXR93/hIDmDwWAwGLmgANo+dWz67AkpjoVpTNsMBoPBYPiimJXkAcK0zWAwGAyGL4pZkqaB57YZDAajktis1+qb41aCAVFwkPzKZ0/vf3zu7RfKStt7H129cWj+zs3cE35059D8jdlHxD9dGOz0D139euC8Z/7GoXlV/+HeGwofPRn5ApT7jUPzN8Zu/+ZUZHfqm/WoVosq7fd3m1O1qeau854Epj3iH11JlBW7zSksU4yxofggeQEryUPZgr6/WNo+1HsS/+tm78ah+RvHd/Y8nw7I4KM7Jm2Hvjcz+3o+WDZ29/HCw9xfKAY7fVG+ZcAIaHu3GdWmojHaP6ACbNYRhtttTk01m/XyVKJQMHGXCwXT9kv1c/0HJabtwvDozqHendmEUJ/MXv36o96oaDv8vUzb+d5fKEZJ25seTOOk7eGB0zZKkEUpMBRt7zanppq7XtYsLUrVBg48ip/bjvdKy0Lb8VBYiQPrEcL5G4fm+x89Sx6IB5ee9+NBZuK98cXZR09mjZeq700i0rFvvdm7Mfsoih7dOb6zd1PSJ5q+ng7kOXndJD+Vtq3vRdIJtaevnlnLi8Zuc6pW39ysG4HI+Ico/QW4FhC2TG+Hl1KIJwLuN0Yfm/UkIVLP5CZDy1AQtB3Xz/Rfj+6k5WKrt9Gzr4+TwfbNuqFncyqq1RLZBBfrm/InkV94szbajsfftZpBxrvRVE35abepJBKL0AlRkcJmXZRKfVMLWSPlDtJHisxWjghtJzUUYT74ZvgLcZ16L9QTr2/KdTy/dDuSvzNvlwQFz203P+j+98fdS8eDaFu4G+GeBjt9nZwMAhvs9IXbutlT3JBttKeNVsn3xlybeD2YPqXMod6T6NGdQ70nN3v9j55FKX2S+brZU6+nacLrWr5M/en32tIJsielZ6j9LfdjSHxN7GYgayY/xB5F+haFWDWWxTxQ6P2qe5YDKVJP+IAg+QzIQNtovbWte9htThkKNqeiWl38Lpk4puc0v1g8fFO5uFmX6WzWAXNvKqyvqkMGyWNzuwfdKcOn94siJcsdlhesAI5yNGk7ZW29Hm3Wcc2J69R7KTolrpP5JdoRlg/GuFHGue1BFI8DIJs+mQUuxh10lW7Ldb9G2+R7KbcYU686iJG+9cns1Tuzva8H4gqV/rOvj4NEgMJPZmHi6m2m/uR7rekE2NPzQX/7Y/dj0JyGxpPil9S56T5G8aaIUwq9X7kD/k7pqUZIhxi66AGMhMLto23zutL9gsCJcDeaUvm4nlKsFiSvg9FwApW2lRt2o6n0n5DODZWsc9tYJ0MHrBdpuCT9P1buagGBf7nK0aBt+AaK/jFNzcv4e6nc49fpeo63I+1RHm6XA2Wc2x5E+CDYQdsw4jefdbRNvpd0fxH0pMAnijFu/IccB6Ppq3QuFdYyZcY51QTJ91rTCbAnpWcG+9P3YzDpELgb+9jEuAtxQKH3w1uMexE9kWj7ELQdHCR3XVdzhdD2pj6MFmxt0rbtWRgGV4PeljlyH9p2DLkp2qbKXS1GLYhjK0csQXWEbau25HXre+WPVAxeXKfruXMwzbRdHhQ/t/3t51mC5Dq9OUfbT2bhkunMo23yvTbaTiED4DeNhWAEbbtG2+bw2qo/+V5rOgH2tEUFguxvux8D5Uc9ads1eg69H1xOFhzZ9czP5+VI2+RaRXOkZtA2PtoGo2f8WfSGKElnqkmpQ9M2FWpGbvOhbddo21mOWoLY4gjR1wuMbTvrD7XeG1yn67kXbXOQvBwoeG7bfeQ2Nbf9ZHaentN9dMeIS0MaeDI777wf/qTzKPZeH9qWgUecPq9+PSDTB/rHH3HBuUnLymEf2r769cCeToA9KT1D7W+9H4HiNPR5R9cMoT4HScxJhtyfXp+q1yFrk3pSLhW83c8pWmg7uR6HMVz1Fp3c0VUCOavX8DlpSNt4oHtTX8KGBsPjeXGcmTbxn8KWpKG0TZa79mcN9hJtBaXyoiWIHhbcdr4XeTl6naznLlbmwXaJUPzcdkbajhJvTkRQwSJkc2V4/6MdnVaN++Fybi1ojL7XOkdo3E/TJ50vETS++vVA6RaoqipLjXT9re9F0wm3J6FnoP0d9xtQhy3aeAZ3N2AhLTozjQUQQ+6PNCdo11P/SXmFT5w3AfkBmJx0uHPTY2470qbJMftrnyzVa8gKcGXFODo5jQXYa1hSyrpxdXgtF58L/g76AIyk7YgsW1FcU81dxRBoOZrDauKbL70rh7yauI7XH/dyd72y4fl10DazdplQRtoet00YJUQ5Q3S2dcNB8FlWVVUYtM2oGpi0ywWmbUYlUEbaxmLn2fScQNZuphPVVFScURUwaZcNTNuMSqBctJ3EGYmpyTA9A+a1qwQZ8R7rvqSMocFHiZQOxa8kh7jPtM3IB8urWywsLCwsYxSmbUYAlle39hgMBoMxJjBtM8KQjbb7Ow9ZWFhYWIYRQduv/ur9n55+i2mb4QWm7dHI8urW2HVgYWEplTBtM7JgeNo20xx7YyihMG2zsLBowrTNyIJhaFskcvVPD350evVHp1ev/umBuFhYXe8vNlpL214/dduNRrs/9sbZx2h7Y6XVaHS6idqInhsrrQaZU0+D5PwU0Plhf73TSJBeGaXItzfmVu7aMrW9NpfFPp42bGBqDJnm8No6E7E3IonF9eKLMs8CymC9u0tNJLMbK61Gu99tw2K9u9QU/4R/O8QSpGTaZmRBNtoWj8eEfeo3N//692d//fuzU7+5Kci7sHbuTdvba3PNzmKzIJcdJgZtQ1X7i43WnK5n7D19cjoy2gaPbK/NCbbeXlvycu65ENLD/k7M2SIp6ECHf0VQCvnlKOc0h6TtUjSZEVlvfS25f73TAFV6rrm2sfOwv3N3SWmY/UXZSYV/S0Ed5i9+8QumbUZucNJ2rVZDaRsS9v7+/v7+fkzbtZ9cqf3kSlQC2t5Yac2t3I3/O25vgtI2bP+txbaq53qn0e745XSUtA2G2olfK/SNqNxdaqqjQNmHGAVtd9tDWn4EVpp42r671ERjPMMoL59VnMZ6B0TCvGj7FxiYthm5wU7b8Y7LKG3H9AzH2fEVF233FxutpfW1uTQqtbHS0mOM28mvStgqvTi3sqaO+WCcFjbatJssO87iupa4cUVPVrvBcr9IM2HiRqMTv9dJ20vb8EqsfJ/IKQhjtvuaSbOYMcCvQZ31+KF8S0Lq0FCazkTZ2SuGzILmLsWQCDUFZUaz9A0lNVnvqKFUkyRkuXfpimHNJkI83bamlV8idJWApY8nvg1tm6aQFCtpZCzjPi0ILSDVYisdozKgU0tExn2EGmErDsSXtv/xj/8DJaZtCKZtRnZYaFsclGChbUoiG203koHaekc2LRmh6i8qdCjccXIRzPiC1r7emVu5q7d/pBGaM1LmFSNZpbv9UP8nrTBMVqdthXuSN3bbIB3hH5051U0aakaokgJ9XlPny8T5JrcBsyQZQQyFjVNljuwVA3WjUpOUANJElFxTZrSWvp53lCQ0c8FyJ4vAVf+d42CvRoTZgS59LXGFdGN+EixFJo70PHxbkK6hbrH4frMyIB0pUzcfgf1OjY/N/rT5txSKttGRN9M2Iwso2oZnMOVN22iMMf1b5YaEAPQOr7gTQIw7jTBXvLoEIx7qiprs9tqcMWRR/2kobDhfjbYNv6AEBvRErDkd1oxeTs30ZYq5Um1Tty79JrFeLEOOLEWmjbbTm91mRJLCzdJtN7B1BvhoG5n+xysG+jemgFx/Z97jTsRR+rbEFQWU4S9l5AwtyF5pHfNBcd9R7wGrKbhFXbuqVXXH9LaW1B4dJOfRNiMfoLStHZ0YRNuuJWn50jblc5VhkBw3+NI2wk9xHFJ4AfnPTLSNjrYTB7EuMuuT06HN6OHU3JZp9/vEYgJgN5LSvHKkemqPuW04BCfM6E3bGEOgNxdA2zIdtHfiTCS1g6MR4V2fREjaNoycoQVlpO24OGj7m/WEENmtl4kMO9rmuW1GgTBpu2YApe14SRpK2DGIRuLjcWCgTA/5qkFyIsKpL5gSDdgzSI7PipmEJKK7mMJW2tb77MrQxwg20jnNwYypOIPkUGex/hYakFi6DwylBPbDcwSthM6yg7+RsjBf6h0kd+uJ/mqvGH60LSozEva3lT5mB6P0HYnDcu/DIDlt5GwtyF5pzQzilEnoZhVkceWwc9smmLYZeSKXD8BCvtj2GFRJ/gCNZ12sSUGXpCmBVvVry9RPyRU3Gi0ZV7RktQ+Uze+VEYWz0rayRJYIPLb7fbGSyBJe9jejr2g6K/rEogQbDUMBncmy8+Uz8N22tkZssd0yypc0o1n6ipJug1ho21kxSMYVEBPwjUajIbtEXrYy7ICWPpo4VKAvejYbKy2xJM1m5OAWZK+09n4SUiJIxkmRi+PgI8OsJDdFuE3qJ6ZtRhhy2W5FIIQDDpZYv9uuirh19p9NHK3a49gQZmKlilU3UIb4bjtImLYZWcB7ko9GrLukVUYcOiNrvEsgWT4xZ7FItWi7byxzgSArs9glDQy1M+6SZhGmbUYWMG2PRiZ9T3J0fdC4JYm4lkyryku1aLvUwrTNyAKm7dHIpNM2CwtLsDBtM7IgA20vr26xsLCwlF8yjElGj2WmbUYQMtTsqjQGBoNxkFEVT8W0zQjDyPqwY49HsbCwHBARdHix3eksr4590O8Upm1GMHohqDRtL/McMwvLpIug7cuXL1+7do1yZWtrN0Llwm87p8/M0jL/ce/6pbnzr56ZPX3mrTfnOt3eynv0/a/+6n0hTNuMMAxCMDxtmwqMrD0zbbOwTLwI2r527drOzg7lyr766n9C5cKHN469OEPLwqeD/q/Jf+ry09NvQWHaZhSFYWhbJBKyvVqeH5yYtA2+Re5jRwGixyXlqGeWp5Tvp81d20YpYLcy/NQQIWEnMoXasIGpMWSaw2sbtFWqLVOj2MQmzwLKYD3zRN2HffD9tHZKrP37aUHbvV5vMBhQruy77/4ZKhd+13/u8AlaLt6KHixMv/z84RPPHT51bPral9H91+n7X/i3NzRh2vbEZr1W3xy3EhVCNtoWj8eEDQ/qDjl9ZFgxaFvfOnFO3+s49p4W3+q/82JeudM2g5R7rC55Off87LneAZaBDnT4VwSlUMSXxGWg7ep+Hh2uvNjlHm44n3W3svHRdkzV3//l9lef3x48i765fu7tFwqi7d3mVG2queu8J4FJcvGPriTKit3mFJYpBg4nbdtPH4kJe39/f39/P6btkLM+hxWMtpU9wBfbymkH/fVOo93x862jpG0w1A7eAiwve3qexJVNfDZSHdLyI7DSxNM23EI/L+Xls5n3Bh8fbcfyUv3ch78615xOht3jo+0Em3WE4XabU1PNZr2yvM3EHQI7bTvP+oTj7IAjuteTMwZEM06OfJBhbSPIJo8lkK3aSdtL233jnD70qIP4TCSoA64nPFZBkty2uC2HIz20+KFydERzbUOxjHEEiG4lJReL68kBi0jw2XnutW4KyoxSc1JJTZRzJFGSEEdKiANbtSJwZhMhHqPK+SVCVwlY+nji29C2aQpJsZJGxjIuTueEdtD+iZ+5olhsRRxGAidEzGIiMu4j1Ag75CSucdO2r4yTtnebU1PN3WizwrwdYoKDDgttZzui24O2G8bxgobLVjrjqg9a7wjHodM2du61PA8j8RTYIVRJmtpoO9VTBvr66lmE+gGFWQ7Q1Pkycb7JbcAOSUYslsFzBHMBqMI8rBo58VAQgFlkFjN6H6AZGwchCc1csDdDFoE1mz7jYJ9EUDvQpY8fBSZS0w/QRBNHeh6xnbWaQFYM2mLx/WZlQDpSljZrEdjv7Gc+93p8tH3xlv6SwLntlIRAeFtl3M06OFQZcJa8bhIZQtu7zalafRNjPvhm+AtxnXov1BO+m7iO5zfRMn3GyBnK25v1Csf+iwJF284juoegbdksJafKxVCtpe3EoaNjXDCC0Wnb8AtpUs21DfkucF1PkwqSw0fkK5IE9XFD0GibOHdoe21OMlbq1qXfJNaLZciR8kbraFsvMtqMSFK4WbrtBrbOAB9tI9P/pjJkNjEFtCoXmIij9G2JKwqgZ2Ui+cLtrLcRpGKEWUwUfaNh9ID1NusS9egOrao7prdhOuOj7VPHps+eSKT5QfePn92+fiqItqeau1r4F/4D8i+kLHh9s26QlknbKWvrzLdZR6fBqevUe6lhMHGdzG9C5vEj2MMyH5quTNsqUNquqQii7ZAlaWlnXHoWpTHHUUr1BkV8RttJmuvCveLuzEpsxdE2mTVxpng8I6jMC0LL0JTmlSPVU3vMbcMhOGFGb9rGGAK9uQDaRqpcUCKg6pql70g8FZK2DSPb6wkYGSMVI8xi6CkyqG4OERUYJFK50bY5+A4cbU81dw0uSslR5S3wLzXSbdKbQdvwDRT9R7YExGX8vbvNKZQ58etUfvXpayJowAztAZO2awZQ2o6XpKGEHYNozyDuJxyKWIplhOBSuuovYpNqHnPb0j8awUYzTR/HDeONeuQ8S5Ac6izW38I48/baXLOzaPgyYBklsB+eI2gldJYdKzKbGb2D5G490V/RIgikbaTKeZU+Zgej9B2Jw3JXguS0kVE7azWBqhj+FkMok64AVkEWV1Z3bjseczvWo9G0rdMTDGirAWQ5DNVgp21zhC1ZEmNt4rr1vfJHKgYvrlP5pRUicsIgkcsHYH6ELX3EYrulcli6mkbwk/n5MuQ/IkhO0rayRJYIPLb7fbGSyBJelo8AH7QulvbksCRNy2NfCzYalgE6mzkK5DPw3ba2RswoMpsZYUbi+xUl3Qax0DZaBF6MKyAm4JUq52crww5o6aOJQwX6omezsdISS9JsRjbtrNUEvWLYK629n+TTZi0iF8fBRyq4kjz+AExAfMM9FG27RttO7tISROg2/jlDbNvJmdR6b3Cdyq8nbfNicg/kst2KQAhd5SDW77arIm6d/WcTR6v2ODaEmVipYtUNlOp9t33xVvTt591Lx5N9V8K3W5lq7mozyWDOWPuzpsSkLeyl8qIliB4W3Pb7BMsj8E7l18nK9JI0JnMVE7YnubLjWEXEoTOyxrsEkuUTcxaLVIu2leCBAbIyi13SwFC75LukxTwd/5FtbjuKlAXX6HLuqeauMrOsjqAhnRtBbOSbL0ChyjPazLU1Fg6vu5e768FzPL8O2saH+4lKzNsQE0bbkyXo+qBxSxJxLZlWlZdq0fZIpRy0/c31c/0HvLlpYaBj9NR6+AMMpm0WFpYyy4hpG3zi9dZi8sXXW4u3b1/vXjoeuiRtlK680qBJm4r0jwhjPwWWhYWFhSVUPL8QY9rODOIoEWXKfzxYzjSuZTAYDMa4sLy6Bbw4B8kPGLLR9tgjVCwsLCwHUARtz755buaVC1l2SRs36TCGBdP2xMgyz6mzsEy6CNo+fWb22IszWXZJGzfpMIbF8LRtpjn2mn0whWmbhWXixaBtrxluKEzblccwtC0SCdmVjD8pKUpM2gbfXvexow/R46FQyVZqWZ5Svhc3t6UbpYDd2fBTUoSEnUAVasMGpsaQaQ6vbdDWsLZMjWLTnjwLKIP1jAN/dx72wffi2qm4nt+LM20fXGSjbfF4TNjwfOuQQztY8hSDtvWtIuf0vZ1j72nxrf47TTpTCH8EbjS9vbbk5dzzq13rHWAZ6ECHf0VQCkW0lzLQdnWdQLjyYld/uMH+0LuzMW0fXDhpu2Y9tCMm7P39/f39/Zi2g47IZMlRMNpW9jxfbCunO/TXO412x8+3jpK2wVA7eMuzvGqX58lj2cRn49ghLT8CK008bcMjA/JSXj47/F7oTNsHF3bajjeCQ2k7pmc4zg442Xo9OUVAVNzkUAcZyDXCSvLggYrtEjoycdL20nbfOJcQPdohPgMKlgheavAYCUly2+K2HI4w0eKHylEZzbUNpZ4YR57odUbJxeJ6cqAkEnx2nvOtm4Iyo9ScVFIT5dzMhxhJiCM0Ol28CJzZRIjHaIB+idBVApY+nvg2tG2aQlKspJGxjIvTSKEdtH/iZ8woFlsRh6/ACRGzmIiM+wg1ws508hjT9sGFhbbF/q0W2qYksh6RSR2IKVuX0v1UW916J6cZvkkTnbaxc77l+R+Jp8AO3UosrI2201KTgb6+evaifiBjlgNDdb5MnG9yG6gVSUYs9QTPEcwFoArzcG7khEdBAGYFtpjR+8DQ2DgISWjm6munl6JFYM2mzzjYJxHUDnTp40efidT0A0PRxJGeR2xnrSaQFYO2WHy/WRmQjpTFg1kE9jv7w5/zzbR9cEHRNtwaPm/alhVRsohc/tNa2k5cGDqqA312FkU02jb8QmrY5tqGtDy4rluYCpLDR+QrkgT1cUPQaBsZW4jST7VN3br0m8R6sQw5Ut5oHW3rFZg2I5IUbpZuu4GtM8BH28j0v6kMmU1MAa0BBibiKH1b4ooC6NmgSL5wO+seA6kYYRYTRd9oGD1gNQW3qEeVaFXdMb0N02HaZuC0rZ3oEkTbIUvS0u6nbEtK9Y3jcuoNLKT4jLYTC68L94q7M6OkRkPbZEHHa2776YygMi8I6wlNaV45knd6zm3DIThhRm/aFgk20P4WeiUv2kYaYFAioCGbpe9IPBWStg0j2+sJGBkjFSPMYuipOahuDhEVGCTCo21GVpi0XTOA0na8JA0l7BhEDQaRLtGExOIjI+iUOuj+Ym5fv0yseMxtP+zvqDFPNXhIx3Ipxw3jjXrkPEuQHOos1t/COPP22lyzs2j4MlBPlMB+eI6gldBZdqwC28zoHSR364n+ihZBIG0jDdCr9DE7GKXvSByWuxIkp42M2lmrCVTF8LcYQpl0BbAKsriS57YZQyCXD8D8CFu2isV2S/Xa6foR4ZHND3ahx+cgOSa+tK0skSUCj+1+X6wksoSX5SPAB62LpT05LEkzS1wJNhr1BOhs5iiQz8B329oaMaMC28wIMxLfryjpNoiFttEi8GJcATEBrzRAP1sZdkBLH00cKtAXPZuNlZZYkmYzsmlnrSboFcNeae39JKREkIyTIhfHwUd4JTkjO3LZbkUgF/phySbW77arIm6d/WcTR6s2T+Lka8/KVd1A4e+2GZnBe5JPjFh3SauMOHRG1niXQLJ8Ys5ikWrRthI8MEBWZrFLGhhq8y5pDA8wbU+MTPqe5Oj6oHFLEnEtmVaVl2rR9kgllLb5KJEJBNP2xMik0zYLC4uk7V6vNxgMVHd+vyy0vby6xcLCwsLCwiJk9s1L24NbC9NnTyRy7ctS0XaG4SCDwWAwGBOJ5dWt02fmPx30wUnbF28xbTMYDAaDUUIsr279+p3/6u5sf969dPzwiecOv/ZG96u/TSRto+nnlTjDCe6BMRgMxvBYXt369TvvnfzZhd8//f6HKIqifz17evv96ZcnjbajKPriiy9Onjx59OjRo0ePXrlyhZl7xGDaZjAYjOGR0vYvnzt86tj02RPTLz/vv5L8H//4f0VLLr4+5uyjKc6fP08PuO91G41G956WwmBrodFY2Bo4X3Wv63VbLk9VDGZRDrYWpK3vddMvHQ3rjwDy7bAksHIZbC0UVVhACb/a5pfm8Ck5E7HcoGRqFEWbZwFlsN5gawHJ7GBrodG9pyZXYE1iTDYAbYd/ADYu2kY3yrYgiiIxzoacHY+51XvvdRsLCwtaa4pdj8UxiZ+YtkkYRQlyHXu1veTvLS/nnp/R7nVB4UJnOvwrglIoohqUgbarW7fDlb+3JesOqNKpR5F/pTeNo5PKqDiWV7cuX768s7MTRVEU3X89iLbHFSSnjrhAEadjDrXPnz9/9OhRlLa7XZW373Ub3a6fY2LaJoHRNhhqBxsgL6PBLoN2YRS0fa87ZOUZVoE8Eqk6bQ+2FlD6HEZ5+azC1QpTM20zsmB5deu9D+Z+efbCB90/fnb7+qmq0Pae95hbo+2YuWPOpmh7awCbU9zotKGhCIOBGGD3XvL4veQG2VblI6CZDsRtW1VwbcPCRtvqgFen0sT20O6a2c3YpFIQ3Xvyd93QBmsDN4uWJlUT9oxLhpIa9AkZkySSTmRyF1KLnNlEiMeYjvBLhK7VsALjiUsFQDAj+YU0MpZxtLC1f6IFpFpsq2tUBnR2jMi4D6gRNs3hDIYnQJD84q0Kjba1PywwaVvg5MmTBG2D9pQ0M+ELgFNIBkraaLshb5QUAlIzfvaeOK829KLU+TJxsdLbA0eb9IgUF0cEOWShwIKArKI6Si1sqWgGnlQKjqoJ5mwlMVyL84qQhIRQADAZXous2fQZB/skgtrBUoHVxPUeVdzfdSSO9DxiO2s1gawYtMWMdglLQO1Imbr5AFZui7pI5WMwnFhe3Xr3g7lfnv0PaiVaqWl7z8XccSI///nPUdr+4osvKNoWDSptZOB6Q3OuVJAcPmLExfRO9+S3Xq0o8XGGXKUG3Lr0m8R6sQyForzROtrWR0Z0TUCSwksWkqP1Zi2PZnTVmU1MAcmk5j3uRBwV2Ja4ogA6QYLkC7ezPuhHKkaYxUBaShAoy9BY7Q9oz/H0NmNYgLntBwv0MvKS0nYoZ//4xz8W42yMsyfGdcwAABRPSURBVPdAQx1sLSxs3RNNDPcF6iPE30zbe3t77tG2fjm2kObkgFslKW1vb8+Dimg98LltOAQnaoI3betZIW8ugLZlOmjvxJlI+jxagR2JA+1x2jaMjFsVMR9SMcIsFidA25/SA1VMH/3zaJuRJ5ZXt959572TP3ujfq7/oFpB8lDO1r77wjh7zxw3GJE6GL4zHiG9HgzW6RG6Axokh/5LrL+FscjB1oKxOnBPiYNAU2coFCT8bIRngTI6l5sv9Q6Su/VEf0VrUSBtw35pwGgbtYNRgR2Ji2T1IDltZNTOCcwunaqEv8Uo+kR1swIpcJ7bZuSMqs5tO2e148f9vtWG0PrXWLgMRu3kFKg1NisfUYN5ySVekiZDq/rUInKLnP6W/9ILJZDPyPfHC6PgdVtNMLVUlHTATttoLfJiXAExCG00GuCDCS9bGXZAKzCaOFTgnuDzlNldRjbtrNkYMbml3dn7SUiJIBknoQX09chDkiQZP2cwvLC8uvXOO++d/NnZY9PXvqwQbTszBmlbcHYBBmT4wvbdNoFSerVSKlVhHIAZImpVOdclRiYsr259uHixe633LPrm+rm3X6gEbfvATCpfwzFC4dglzUQ5J/4OAMuMFtUyqBI8MEBW5kG6Sxq4JWxtOoMhsLy69UHzv87NXZi2rkerHm3vqcydo8kY2RBSlOj6oHEjiYCWTKvKo1q0zWCMH0Ntblpy2maUClyUDAaDMTwqubmpE/2dhyxlk+XVrbHrwMLCwlJdEbR9/oO5X5699NnT+x9PzNw2mmE0/bEXw8ERpm0WFhaWYUTQdvU+AMtA2xF93vbYS+KACNM2CwsLyzAiaPvf/71RsQ/AQmk7sp63De/stvW1oXMrd8deVJMhJm1vrLQajU43/ud6JzV5emUk0m03FtfFP/uLjdbSdvrP9U6j3ceeUm9Dfm2YD26stBq2p4pLzaKt+ClfnYPMNWTKZW6qdssXqfn22lyxVdSnUnk+m616QAOGPB77mebahjRRfvXTYfYgubvURCqGoO0bv7++1dt5Fn37effS8SDaHtd52xlo23Ledqaal0GKc17VEIO2gUG21+YEW2+vLa37JJiTPSE3b6/NAR+6sdIi/KmTtltzTe2G2Mtkc09DpuZJ26Fv8bf/MC4+c8plEM+M4yRatGLFVyrPZzPTdvLUxkqr0Vzb8H0KdtMzKzCaitdfNMYwgrbfnJt/64NMH4CVgbbRrVdgPmOGtpy3PapSKbmLKVww2gZDbd+Gl7c9t9fm0ldvrLQWV9bmEgd6d0n3a56v7i82WottlfLXO412J7N7Gi41X9oOfMvYaLvbhoRX5jblnXHYbR2VYsVXKs9nh6XtoavieGn77lKTKnobbb/65rmZV16r0glgkLNDads8b9unVGTwPPHpSb1PIrrba3NJsGtNHUGKqC8I6Yy0W10isdH2Tn9RCRXeXWqCTnFC6neXmokJF9cNeyrWTktwPbm4uB4HANGApKDn+A+hFVDPmriRYFx5YO5Eyq2lbTRrSZbT3PmnpqkHnnXXyYcabXu/BanPRgPBFVBv80hEk/WOah/TeyoNE222jlqhmgjMoaim0GudcluqgGUOQtMc1AoiTbvaeE5Fya501PtHU6nsVdr8p3E/lrJhWz2zpltOE5T1bW7lrlH50TcqBZQmpdVbqsRNsxMGJMMtNtru9XqDwaBKJ4BBzs5A29p525iDoDpTSjsEbSCpZ2ByCKSw3lFryQEVnbb1EUbSMJIWC2LXievUZ5qJ7ra0diNhxPWObDnrHXPuPHXN/cXm2oYYzMnXWRNHZrOS+6XHTwb0aTpm1oh5LK/UYNxPma4LqpM+b/Gpz4hW2IwplixesrC2mK6tD2eIhWsmOlIPPWqFkU1RWOuduWYyPE1nT0jLq+yodtTwPIp7yDT9KrNpWEAJRjaLrVS+S0Oo+/F2p9o2VSbp++JuWc0CTvZEXlJlHM7H1IoyO90o9C7pQzTgJ2h79sz8p4NbC9VaklYDsNB2nIj9vG2PigUXTGEdNBngTa+Djh7slDFtCzE7kmkDE/4rreuSIKFHxkcGmLWpv0HhtvuiZcZOWU5su4pSXdSm1oGkHyByJCqPmTVLoMyamvps8mtwnfR5i7U+aw0EVcDejpBfpXTbyEVqtE0n6KoVZjalQVpL6/HfqTNFLW8kO4d3yEzaDkgT7a0SObUSVaGVSm+wVN6J+92NWgAG7aBP8LSkJS+KX8Kdj6MrgFibqLrxuMXsh3Wg9QRtnz4z/+mg/3qFPgCrqaBo2+Rs87xtgmNUm8oaILo/PrRNdYQPqLhG24lsrLRw+hS/NowW6LC2i7a31+aaa92Vluybt9dkP9eRuDmWEr/eXWoKX688hfUMXLRNpRbmYZ2DM6+36EYwG4hDAaId6b9qYvo1K23bX0fSthkdbS1txx2su0vNTldkzYsYGnPNFhH/xDxMNtq25dROKoVWKq3BaiY18q7dH9Co7aXvtKQlL4rgzicH2o4rtpkd22j79Jn5Twc71zOctz3V3B09bdcMoLRtcrZ53jZVPEifXY+I6o0Tix1pPU2mbcuStDVYgyWZNTuLRsUFIUrVP5LWdrYrrdnEHXlq3l29Ips6HmprYGG9NGtwZpHS35laXw0GWsJxFit5vYW0MN5ADAXs7cjRypwl66mVs1boA8SNlRYMjy+2O0QY1gizp39326g9EQfin6byty2nrspfYKUiG2y33RBLULttfe4DzkH4NWrqBk9L2kpfE8L5+NE2bkD70ldybvv0mfO/7fWuW7/+Ktdo24k+vYDcRdhonUjXI0gWMXi90WiQKzXUFTe8JA2plH10yZ7SpI0PuxV76tYOalf6NyS6K8ESX2wny4KMJUtahwCL4MU1Sp8ta4AEQ1KT6oXWyWxvMeuz2UBQBZDbrIk4e7pW2nYkSPxtZFNZvqAtZUAsjyZ7d6kZE5XiwRv6s0FpGunjOfXpsxZTqfQGixVNQ/I3snODb6Mm6oOvJenSF/0hm/Pxp23CgLbqbaHt2WMvzkzUUSJ9lbYFZ+dCPzYZ9YccVRLbd9uEGNPGLCwsLCOSAv2PF1PYaDtdSR5lOUpktzlVq9U3Jc9u1mtx8Hy3OVWrb27W01C2flMMV5x9SNqGGE0xh39/fFDEsUuaKcpUEAsLC8soBWHNvMSDKRy7pM2+eW7mlQsfdP/42e3rp8JH25t1SMmb9ZSJd5tTkq0hu8MHBMnnTtt9lbmLLF0Q8OGhNi0he5JTazRYWFhYKio5MIWg7TRInnUlOaDh3eaUYOF4tA0H2PEvktj1J/KmbZZSCR8lwsLCwjKM5EbbkqAVpjZpu1bfFINwiJxp+935T1hYWKolGXrnDMbBhDq3HQMnb8uStGTIvNuc0sbRkrbFqNo1vM6Ftn1TZzAYJQDTNoPhj3Ru+80T09e+jB4sTJ89QWxxal1JvlmvTdXrkLVV2tYC6cr6NAhlQjyKmLYZjAOAd+c/+cMf/vDnP/+5CB/HYEwYQJD8rcVMS9JibNa1xeJaNNzyk871TNtFofvprXGrwGAgYNpmMPyBfbd96tj0y1loWx1Ca3PbGUFtbmrJEtM2BaZtRjnBtM1g+AP7bvvireh+GG1j33EVS9sW5s6Ftq/+6cGPTq/+6PTq1T89GD61jHjcOlI70nqcW3ombT9uHanVZnpRFEW9GRAByfOt+aA3QypVsOaOUujN1FITag/56mLPmj0R7Qbn/VQimewXP3ek9ViayKKAzY5M2wyGP8DctpjVDhltJxunIIvMCh9tU8yN0nat5runW0zYp35z869/f/bXvz879ZubRZJ3Nj+bEQZtw7ePVJNweHIbTqJFK3bkiKabIDTfFMZN28lTIR3F3gxiabsCvRmibJi2GQx/LK9uvfrmuZlXXrOctF26zU0FYaPMTdG2k7khYe/v7+/v78e0XfvJldpPrhSTv7HTtnCjk0HbMfOMkrd7M7UjMzMqb/dmajMz3vYsEW2HpIDeybTNYBQOECR/sECsIS8vbe9hzG0ZbduZO6ZnOM6Or3jQ9uPWkSTImLgleUE4qt5M7UirNQNikSA4OdOL4L+TZ4QTNJ9FX5tQCDXeDKRtJTVct16iwExP6kKpB14G3vW4dSS+SlgsVQCaQsufpjngbaoUrGoHlkL8K7Tk49aR+ArIo66GvHik1cLulAXaeoz8QOSdvt9WVVDaVuuSngVppLQmG0FyRGWmbQYjByyvbs2emf90cGth+tqXFTpvW/sDwh4kr9HMDUnaFFpHM7II4ofKtB+cR9b8cqQ+rjlB17O9GdEPsAx2dNpWBqbKDLFwzUZqqkrGnzb1hNPuzYiwckxxFoup7IgOpSnapkvBpnbGUpCMlGRJeQpVA3RXDM6TBZr+H+c7grb1++1VBQ2SazegWcDJnsiLNI0Jpm0Gwx/pedv917PvklYkipjbppg7I22bVKJeSV2o3c2ll+EYBr8t/RsMgMCA1hbh1Ghbde34aNtDN2/1JEUfafXiv9NLfhY7gk+8mrQdkCbyd1ApwPwqjAntYKih8JdHgZIr3Aja1u53VBXYY8OiLxnqM/JG+bSRC6ZtBiMAKW3vXD/Xf1Ah2qY4e6+A0bZjSVpetC2fEk7dSdvUABGHa7RN07ZNN3/10uhxQtgzPZGYl8VqR46g09aq5iKpbLQdWgryj8etI6I7QtrBRdu2Ao2p0KhqWN61+x0p20M+mWnbLCoebTMYOWB5dev0mfO/7fWudy8dr9ySNBSZ57bjJWkBhJ3AGSQ34+F4LBHMS3oShvneENpWYqlW2rbp5q9e9Lh1BIbHZ2ZmwAu8LIbppLM7mMb2LAXwd5ZSUIbpmHqoGmiQ3FGgYEgvewdYLNu835Kyi7az1Gek9NX6poBpm8Hwx/Lq1ukz/3HylXNnzr39QlVo247MK8ljZPpiW4YZjRVAjpBs8mQ6JqrVamBhsp0w1FBkeJA8gLZtuvmrp/ZwtN6Or8UEzSkMUdOfDSsFPf2AUtCsRAWZDfVSrYklaWqB6vULKxotl1p42lZVnLTtb0lr6TNtMxh5IA2S//kvt//y4OkfX5lg2h6BtiWH9bttBqNoMG0zGDlgeXXr/Q8v/+7K4vEKLUmzgzc3pWDdJY3BKBS8SxqDkQ+WV7eu91Z+PdR520WCaTtH8J7kjHKCaZvB8Mfy6tZ/zp3/6Yszzx1+qW6d3mbarjyYthnlBNM2g+EP7AQwXxkRbYcK0zYFpm1GOfHu/CcX253O8mqG9s7CcgCl1LQdoxcCpm0KTNuMcuLd+U8uX7587dq1oJbOYJQca2s3QuXCbzunz8z6SNlpexACpm0KTNuMcuLd+U+uXbu2s7MT1NIZjJLjq6/+J1QufHjj2IsznlJq2g7C5Jy3TSHrOdzlW0mufYE21Adp5mYj9ItyeB0B4ytq38LK+3D1SuHd+U96yYlGDMbk4Lvv/hkqF37Xz0DGk0nb/t9tj/a87ZGifN9t50fbj1tHjPMz6RcN/TpKB/WMr5bttC5UyQP6MR7TNmMiwbTti0qdtz1SWHdJywa4L1gG5Ebb8S6e5J7Xo6Bt50HfTNskmLYZEwmmbV+M4bxt5Whh9fBDsQ1nesYz3LMaO89YP30a+xnfQlI5Uto8nNtnc1NdSR/0jAOwtV8tyVK0HXRcdKSc+gXTs55pDS4OUxbwXagV4kyBHVhnWvrRHLK6MG0zGJMDpm1fjPy8beUwiXQL6Zme9MLgiAnbYdIghZ5xqCZ+fLJ2xgPYo1s/sSKKfM7bpqZjtXMYTZomuduaLEXbZH6hhcGTkq0hb5PHdVjP8AgtC2AivLNDHDoCOllg3/ADOrvNtM2YSDBt+2Ic520bhKbQmEJOPfPcQ/RoauO8ZPUYinRwGXA2ZcB52+HjPuxUSXeyBG2HHRet0B1y8KaWsnlxqLKABrCMtiOjXNKKoqR1QAfcTNuMiQTTti/Gf952ZKFtcbdGFYiz1pgQ/DMf2qbP23ZO05pq+qwFQ08m146ZynZctIY0mJ2RtoPKQrmFiDeYtI1OxvNom2mbMVFg2vbFyM/b7mGHGetBchnExY8rxnnPnKtNQ8RokNx+pLRzbttUErwYD5I7mcaRdy08neW4aH2lF+wY+QfJhy8LY6YgWUmO0za29P2ADrUjpm3GhIJp2xdjOG9bOVq4JaZw08lcseIJEp7hxCElygGkICAtBG8GdVGqDqJtU8nh4cz7sMdFm+uzle5BknBLI9easSQth7LQnjUU7M2A55BuCtM20zZjojB22h7PUSIZUL7ztk1mGQ+s320XpGRZ8l5CYDP9TNsMxuQgL9oGZ3xdpLe6vD9ptD1WlIW6rLukMW2PFvr0Au+SxrTNmDTkRduvyL9PHZs+eyKRa19GDxbk30zbeaIs1GXdk5xpe2SwL+I7iGDaZkwkCg6SX7wV3X8d/M20PYHgo0QY5QTTNmMiwbTtC0Hb//d//W8WlgMo422AGcC0zZhI5EXbz+O0/VL93NvptPdrb3QvVZ62x+46WVjGKONuhWFg2mZMJEa4kvzUsemXq03b785/Mna/ycIyRolbQYWEaZsxeSiAts2V5HGcvOJB8hhj95ssLGOUXgXBtM2YMBRA23AleSwvPz8Bo+0Yg8Fg7K6ThWUsMqgsxu02GIw8McIgOS4Vo20Gg8FgMMaIEQbJmbYZDAaDwRgOBQfJP7xy+/b17qXjTNsMBoPBYAyP4oPk8NNtpm0Gg8FgMIZAwbT9Uv1c/wHTNoPBYDAYuaD4ue1vP+cgOYPBYDAYuaDgue2Xid3TmLYZDAaDwQhHYUHymLyZthkMBoPByA8F0HY8n/2vZ0+//dvT73+IHixYyZtpm8FgMBgMXxQzt/3N9eQEEV6SxmAwGAxGfiiGtiFP8wdgDAaDwWDkhAJo+7U3uv/9cbJ6HP7NtM1gMBgMxnAo/gMwCK8TwP4/UEhQE79EyrMAAAAASUVORK5CYII=" alt="" />
就是它困扰了我很久,明明可以看到,但就是无法获取。索性换个方式,使用HtmlHelper扩展方法。
扩展方法是一个很好的东西,它是framework3之后才引入的。其实现我们随处可见,也常常会使用。例如对集合进行过滤使用Collection.Where,或者排序OrderBy等,都是在使用Linq的扩展方法。它的好处显而易见,可以不使用继承,而直接对原有类型实现功能的扩展。OK,看看我们如何实现。
首先,需要一个静态类,一个静态方法(扩展方法是在一个静态类中定义一个静态方法,该方法将需要进行扩展的类型作为参数,并使用this关键字声明是对它的扩展)。
- namespace MvcApp.Helpers
- {
- public static class HtmlHelperExt
- {
- public static MvcHtmlString LabelForProperty<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
- {
- return LabelForProperty(html, expression, null);
- }
- public static MvcHtmlString LabelForProperty<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes)
- {
- string navPath = expression.Body.ToString().TrimStart(expression.Parameters.First().ToString().ToArray()).TrimStart('.');
- string res = Resource.GetDisplay(string.Format("{0}.{1}", typeof(TModel).Name, navPath));
- return LabelExtensions.Label(html, navPath, res ?? navPath, htmlAttributes);
- }
- public static MvcHtmlString LabelForProperty<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
- {
- string navPath = expression.Body.ToString().TrimStart(expression.Parameters.First().ToString().ToArray()).TrimStart('.');
- string res = Resource.GetDisplay(string.Format("{0}.{1}", typeof(TModel).Name, navPath));
- return LabelExtensions.Label(html, navPath, res ?? navPath, htmlAttributes);
- }
- }
- }
在上面的代码示例中,我们实现了三个扩展方法,它们分别对应与原有的方法:
LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression);
LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes);
LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes);
在实现扩展方法时,我们首先通过expression.Body.ToString()获取了当前属性的路径,对于p=>p.UserAddress.City,将返回它的字符串形式"p.UserAddress.City"。然后,再将字符串中的形参表达式 p 替换成当前类型(也就是页面绑定的类型)的名称,则生成字符串"UserProfile.UserAddress.City"。这个字符串符合我们对资源键值定义的格式:"类型名称.属性名"(次例子中,属性名实际上是"UserAddress.City",而非"City")。当获取到这个资源的键,通过资源访问器获取到资源内容,调用LabelExtensions类型的Label(this HtmlHelper html, string expression, string labelText, IDictionary<string, object> htmlAttributes)方法,构造一个label标签。最后,我们需要导入扩展方法实现的名空间,这样在Razor视图中才能使用这些扩展方法。只需在Views文件夹下的Web.config(而不是根目录下的Web.config)文件中添加扩展实现的名空间即可:
- <system.web.webPages.razor>
- <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <pages pageBaseType="System.Web.Mvc.WebViewPage">
- <namespaces>
- ......
- <add namespace="MvcApp.Helpers" />
- </namespaces>
- </pages>
- </system.web.webPages.razor>
至此所有准备工作都已经完成,然后是修改我们的视图,使用新的扩展方法:
- @using (Html.BeginForm("EditUser", "Account", FormMethod.Post))
- {
- @Html.ValidationSummary()
- <div>
- @Html.LabelForProperty(p => p.UserName)
- @Html.TextBoxFor(p => p.UserName)
- @Html.LabelForProperty(p => p.UserAddress.City)
- @Html.TextBoxFor(p => p.UserAddress.City)
- @Html.LabelForProperty(p => p.CompanyAddress.City)
- @Html.TextBoxFor(p => p.CompanyAddress.City)
- </div>
- <input type="submit" value="提交" />
- }
运行页面得到如下结果:
aaarticlea/png;base64,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" alt="" />
值得一提的是,该方案与ModelMetadata没有任何冲突,因为该扩展方未曾调用ModelMetadataProvider。也就是说,这两种方案可以并存。当我们的页面模型类型中不存在多个相同类型的属性需要显示在界面,则可以直接使用LabelFor方法,使用Provider重置显示的内容;而当我们有多个相同类型的导航属性,并且需要将其在页面展示时进行区分时,可使用我们新增的扩展方法(实际上,任何属性的显示,都可以使用这种扩展方法,而不仅局限于此例。如LableForPropery(p => p.UserName))。
这样自定义资源的自主访问便得到了完善。
其实大家注意到,我们此扩展方法实际上就是在Razor视图中调用Html.Lable(string expression, string labelText)。但不同点在于,我们将硬编码的labelText资源键值改变为动态生成资源键值,这种书写方式是值得提倡的。试想假如有一天,资源key值方案改变,例如所有key值前面会附加一个Application名称作为前缀,用于区分不同的应用,那么硬编码情况下,我们需要进行大量的修改。而是用扩展方法,我们仅需要修改扩展方法,追加前缀就可以一次性解决,和乐而不为之呢?
.NET MVC4 实训记录之七(实现资源的自主访问后续)的更多相关文章
- .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)
上一篇我们已经实现自定义资源文件的访问,该篇我们使用它配合ModelMetadata实现资源文件的自主访问.这样做是为了我们能更简单的用MVC原生的方式使用资源文件.由于我的文章旨在记录MVC项目的实 ...
- .NET MVC4 实训记录之五(访问自定义资源文件)
.Net平台下工作好几年了,资源文件么,大多数使用的是.resx文件.它是个好东西,很容易上手,工作效率高,性能稳定.使用.resx文件,会在编译期动态生成已文件名命名的静态类,因此它的访问速度当然是 ...
- .NET MVC4 实训记录之四(Unit of work + Repository)
今日后开启进阶模式! 谈到MVC与EntityFramework,则不得不说一说事务与仓储(Unit of work + Repository). 仓储(Repository):领域对象集合.用于操作 ...
- .NET MVC4 实训记录之二(扩展WebSecurity模型下的UserProfile表)
使用VS2013创建MVC4项目后,自动生成的代码中默认使用WebSecurity模型创建用户管理,生成以下数据库:
- .NET MVC4 实训记录之一(引入Unity3.0 Ioc框架)
一直在做维护项目,没有机会接触完整的架构,于是自学.NET MVC.自今日起,将自学的过程.遇到的问题以及解决方案记录下来. 在WebApp项目中右键,使用NuGet引入Unity3.0.
- .NET MVC4 实训记录之三(EntityFramework 与枚举)
EntityFramework对枚举的引入是从版本5开始的(如果没有记错的话).枚举可以很大程度上提高对程序的可读性.那么在EntityFramework的CodeFirst模式下,如何使用枚举呢?答 ...
- 实训任务05 MapReduce获取成绩表的最高分记录
实训任务05 MapReduce获取成绩表的最高分记录 实训1:统计用户纺问次数 任务描述: 统计用户在2016年度每个自然日的总访问次数.原始数据文件中提供了用户名称与访问日期.这个任务就是要获取 ...
- UML基础与Rose建模实训教程
目 录 第1章 初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章 Rational Rose工具... 6 2.1 安装与配置Rational Ro ...
- <实训|第四天>Linux下的vim你真的掌握了吗?附上ftp远程命令上传。
期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...
随机推荐
- Bootstrap(2)整体架构
Bootstrap(2)整体架构 大多数Bootstrap的使用者都认为Bootstrap只提供了CSS组件 和JavaScript插件,其实CSS组件和JavaScript插件只是Bootstrap ...
- springmvc集成Ueditor插件实现图片上传2、
一.下载Ueditor插件. 地址:http://ueditor.baidu.com/website/download.html 二.环境搭建. 具体可以参看http://fex.baidu.com/ ...
- seaJs组建库
seaJs组建库的使用 原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以 ...
- tortoise svn无法识别subversion check向下代码来解决
使用eclipse小工具subversion check代码后,tortoise svnclient(版本号1.8.8)无法识别,不显示svn图标. 根据每个试验后的线上不实际的解决方案.试过的方法: ...
- 在MVC5中的使用Ninject
在MVC5中的使用 Ninject 从MVC3中就开始接触Ninject这个IOC工具.也一直是MVC Framework系列书籍中推荐的IOC工具,当然还有优秀的Autofac等.性能和使用上面个有 ...
- SQL导入txt以及SQL中的时间格式操作
原文:SQL导入txt以及SQL中的时间格式操作 MySQL中导入txt的指令为: load data local infile "路径名称" into table "表 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- Visual Studio-Sequence Diagram
UML Design Via Visual Studio-Sequence Diagram 本文主要介绍在Visual Studio中设计时序图,内容如下: 何时使用时序图 时序图元素介绍 条件.循环 ...
- php禁用一些重要功能
passthru() 功能叙述性说明:我们同意将运行外部程序和回音输出.分类似至 exec(). 临界水平:高 exec() 功能叙述性说明:同意运行外部程序(例如 UNIX Shell 要么 CMD ...
- Metrics监控应用
使用Metrics监控应用程序的性能 在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前 ...